Regex 向前看与向后看

Regex 向前看与向后看,regex,regex-lookarounds,Regex,Regex Lookarounds,我很难理解“向前看”和“向后看”的概念。例如,有一个字符串“aaaaa xbbbbb”。 如果我们看“x”,向前看是否意味着将“x”看向“bbbbb”或“AAAA”?我指的是方向。如果正则表达式是x(?=insert_regex_此处)这是一个(积极的)向前看*,它向前看,或者向前看,换句话说是朝“bbbbbb”。 它的意思是“找到一个后跟的x,在这里插入\u regex\u” 如果正则表达式是(? (上面的(?=和(?etc是Perl正则表达式语法-根据您对正则表达式的喜好,语法可能略有不同)

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

如果正则表达式是
x(?=insert_regex_此处)
这是一个(积极的)向前看*,它向前看,或者向前看,换句话说是朝“bbbbbb”。 它的意思是“找到一个后跟
的x,在这里插入\u regex\u

如果正则表达式是
(?
(上面的
(?=
(?etc是Perl正则表达式语法-根据您对正则表达式的喜好,语法可能略有不同)


我建议您阅读Chad在评论中给出的链接。它有示例。

我仍然不理解,我想用示例来演示。呃。您给出的示例是负面/正面的回顾,第一个示例丢失了一个
对不起,我的意思是
(?=此语法有点奇怪:名称显然为您提供了引擎的外观方向。但语法感觉像是信息的重复:当您要向后看时,您已经在要匹配的内容后面写入了零宽度匹配,为什么引擎也需要不同的运算符?(在评论中,这是一个实际的问题;)@AdN问题是,look behind必须是固定长度的,而look ahead可以是可变长度的(或者至少,大多数实现都是可变长度的),如果您不从语法上区分它们,那么最终会得到错误的结果。