Lookahead vs lookbehind

时间:2012-07-23 20:49:55

标签: regex regex-lookarounds

我很难理解“向前看”和“向后看”的概念。例如,有一个字符串“aaaaaxbbbbb”。 如果我们看“x”,那么lookahead是否意味着向“bbbbb”或“aaaaa”看“x”?我指的是方向。

1 个答案:

答案 0 :(得分:12)

如果正则表达式是x(?=insert_regex_here),它是*正面*前面* *,它看起来提前,或者转发,换句话说就是朝向“bbbb” ”。 这意味着“找到一个x是后跟 insert_regex_here”。

如果正则表达式(?<=insert_regex_here)x是*(正面)* *后面,后面后面,换句话说就是“aaaa” ”。这意味着“找到前面带有 insert_regex_here”的x。

你也可以有负向前瞻x(?!insert_regex_here),意思是“x 不是后跟insert_regex_here”,负面后瞻(?<!insert_regex_here)x,意思是“x 前面有insert_regex_here“。

(以上(?=(?<!等是Perl正则表达式语法 - 根据你的正则表达式的不同,语法可能略有不同。)

我建议您阅读Chad在评论中提供的链接。 有例子。