正则表达式备忘
捕获
(exp) 引用\1 \2 ...
(?<name>exp) 引用\k<name>
(?:exp)不捕获文本 也不参加分组
零宽断言
其作用是断言左右文本的模式,并不包括在最后匹配的结果中
(?=exp) 匹配exp前面的问题
(?<=exp) 匹配exp后面的问题
(?!exp) 匹配后面不是exp
(?<!exp) 匹配前面不是exp
eg (?<=<(\w+)>).*(?=</\1>)匹配不包含属性的简单HTML标签内里的内容,注意这里只匹配标签内的内容,而不匹配标签本身
这就是零宽断言的效果
注释
(?#comment)这种类型的分组不对正则表达式的处理产生任何影响
贪婪模式与非贪婪模式
大部分的正则引擎是默认贪婪模式的,非贪婪模式需要在次数匹配后面添加'?'
如*? +? ?? {m,n}? {n,}?
网友评论