零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,
断言用来声明一个应该为真的事实。
正则表达式中只有当断言为真时才会继续进行匹配。
分类 代码/语法 说明
捕获
(exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
注释
(?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
例如 :
[a-z]*(?=ing) 可以匹配cooking singing 中的cook与sing
(?<=abc).* 可以匹配abcdefgabc中的defgabc 而不是abcdefg