分组
捕获分组
有时候我们需要获取匹配文本的一部分,用正则表达式From: .*
来匹配email的发信人,然后为了获得发信人的邮件地址,使用将匹配部分进行分组,变成了From: (.*)
,正则表达式会捕获括号中的内容,用户可以获取这部分内容。
非捕获分组
括号在正则表达式中很常用,有时不想捕获内容,可以使用(?:)
代替()
。
反向引用
在使用分组捕获内容之后,可以在正则表达式中使用捕获的这部分内容。
使用<(w )> .*? </1>
来匹配标签,其中1
反向引用了前面已经匹配的(w )
,所以这个正则表达式会匹配形如<div>hello</div>
的标签,而不会匹配<div>hello</span>
。