正则表达式(?< = x)是什么意思?

时间:2010-02-26 11:26:17

标签: regex

(?<=x)在正则表达式中意味着什么?

顺便说一句,我已阅读手册here

5 个答案:

答案 0 :(得分:10)

这是positive lookbehind

  

(?<=a)b(正向后视)与b中的b(仅cab}匹配,但与bed或{{1}不匹配}。

您不会在任何JavaScript手册中找到它,因为它是not supported in JavaScript regex

  

最后,像JavaScript,Ruby和Tcl这样的版本根本不支持lookbehind,即使它们支持预测。

答案 1 :(得分:2)

来自Python re文档:

(?<=...)

  

匹配,如果字符串中的当前位置前面是以当前位置结束的...匹配。这被称为积极的外观断言。 (?<=abc)def将在abcdef中找到匹配项,因为lookbehind将备份3个字符并检查包含的模式是否匹配。包含的模式必须仅匹配某些固定长度的字符串,这意味着允许abca|b,但a*a{3,4}不允许。>>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def' >>> m = re.search('(?<=-)\w+', 'spam-egg') >>> m.group(0) 'egg' 。请注意,以正向后向断言开头的模式在搜索字符串的开头永远不会匹配;你很可能想要使用search()函数而不是match()函数:

{{1}}
  

此示例查找连字符后面的单词:

{{1}}

答案 2 :(得分:2)

它被称为背后的积极外观,它正在向后看字符x,注意这不是javascript支持。供将来参考,here's a better manual:)

答案 3 :(得分:1)

来自regular-expressions.info

  

零宽度正面观察。如果前瞻内的图案可以匹配在该位置结束(即该位置的左侧),则匹配一个位置。根据您正在使用的正则表达式风格,您可能无法在lookbehind中使用量词和/或替换。

答案 4 :(得分:1)

您正在查看positive lookbehind assertion