(?<=x)
在正则表达式中意味着什么?
顺便说一句,我已阅读手册here。
答案 0 :(得分:10)
(?<=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个字符并检查包含的模式是否匹配。包含的模式必须仅匹配某些固定长度的字符串,这意味着允许abc
或a|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)
零宽度正面观察。如果前瞻内的图案可以匹配在该位置结束(即该位置的左侧),则匹配一个位置。根据您正在使用的正则表达式风格,您可能无法在lookbehind中使用量词和/或替换。
答案 4 :(得分:1)