12

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

4

1 回答 1

23

如果正则表达式是x(?=insert_regex_here)一个(正)look*ahead*,它向前看,或者向前看,换句话说就是“bbbb”。它的意思是“找到一个后面跟着 insert_regex_here”的x。

如果正则表达式是(?<=insert_regex_here)x(积极的)look*behind*,它向后看,或者向后看,换句话说,朝向“aaaa”。它的意思是“找到一个前面有 insert_regex_here”的x。

您还可以使用否定的lookaheadx(?!insert_regex_here)表示“后面x 没有insert_regex_here”,以及否定的lookbehind(?<!insert_regex_here)x表示“x前面没有insert_regex_here”。

(以上(?=(?<! 是 Perl 正则表达式语法 - 语法可能略有不同,具体取决于您的正则表达式风格)。

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

于 2012-07-23T23:41:05.600 回答