正则表达式中的look-around
使用向前看和上后看你可以来完成各种各样的assert来满足你的需求。
在字符串处理时,你可以向前或者向后看,同时你可以让你所看的pattern是成功或者失败。
就像Java中的assert()
(?=pattern)
is a positive look-ahead assertion
assert(pattern match) -->
(?!pattern)
is a negative look-ahead assertion
assert(pattern not match) -->
(?<=pattern)
is a positive look-behind assertion
assert(pattern match) <--
(?<!pattern)
is a negative look-behind assertion
assert(pattern not match) <--
look-ahead -->向前看
look-behind <--向后看
1. 寻找最后出现的字符串
这里有很多不使用左右看的方法来完成寻找最后出现的字符串,
但是如果你需要的是:最后的字符串是foo并且foo之后再也没有foo字符串了(可以有其它的字符串),你可以使用:
/foo(?!.*foo)/
正则表达式引擎会在找到foo之后使用look-around中的pattern .*foo去匹配,如果匹配到,但是因为是getative的,
所有assert失败,然后正则表达式引擎会继续查找下一个foo。
例如:foobar会匹配到第一个foo
补充:综合编程 , 其他综合 ,