正则表达式中的预查

有时候使用正则会用到非获取匹配,就是不进行存储供以后使用,也就是正则中的预查,预查分为正向预查(lookahead)和反向预查(lookbehind)。

  • 正向预查

    (?=pattern)正向肯定预查(Positive lookahead)。如Python(?=3)匹配Python后跟3的语句,如输入Python3但其中最后的3不算进结果,返回Python

    (?!pattern)正向否定预查(Negative lookahead)。和上面的类似只是否定的,Python(?!3)匹配后面不带3的句子,输入Python2,也是返回Python

  • 反向预查

    (?<=pattern)反向肯定预查(Positive lookbehind)。如(?<=2)Python其实和上面也差不多反向就是向左匹配就是匹配Python前面是2的语句,如输入2Python,返回Python

    (?<!pattern)反向否定预查(Negative lookbehind)。如(?<!3)Python匹配Python前面不是3的输入,如输入2Python,返回Python

还有一个长的挺像的这里也记录下

(?:pattern) 匹配pattern但不获取匹配结果。 (?:t|b)oy只匹配boy或者toy,和toy|boy一样但更简洁,当然如果使用(t|b)oy就会多一个group