这工作正常:
>>> re.search("([ab]).+?b",'dfebxxxxxxba').group()
'bxxxxxxb'
但是以下内容为None:
>>> re.search("([ab]).+?\1",'dfebxxxxxxba')
如何找到一对“ a”或“ b”之间的文本?
您需要正确地转义反向引用。该字符串'\1'
等于'\x01'
正则表达式解析器将不用作反向引用的字符串。如果您正确地对其进行了转义,则它可以正常工作:
>>> re.search('([ab]).+?\\1', 'dfebxxxxxxba')
<_sre.SRE_Match object; span=(3, 11), match='bxxxxxxb'>
请注意,对于正则表达式中的大多数有效转义序列,您无需转义反斜杠。例如,\s
在字符串中不是有效的转义序列,因此它将像这样传递给regex解析器;一些人喜欢\n
和\t
不事要么是因为他们被视为像从解析器。然后是\b
(字符串中的钟声,正则表达式中的单词边界)和需要转义的反向引用。
另一种方法是使用原始字符串:
>>> re.search(r'([ab]).+?\1', 'dfebxxxxxxba')
<_sre.SRE_Match object; span=(3, 11), match='bxxxxxxb'>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句