2024-05-10 01:04:22 发布
网友
这很好:
>>> re.search("([ab]).+?b",'dfebxxxxxxba').group() 'bxxxxxxb'
但以下没有给出:
>>> re.search("([ab]).+?\1",'dfebxxxxxxba')
如何在一对“a”或“b”之间找到文本?你知道吗
在back引用中使用double\\,如下所示:
\\
re.search("([ab]).+?\\1",'dfebxxxxxxba').group(); 'bxxxxxxb'
您需要正确地避开back引用。字符串'\1'等于'\x01',regex解析器不会将其用作后向引用。如果你能很好地逃脱它,它就会起作用:
'\1'
'\x01'
>>> re.search('([ab]).+?\\1', 'dfebxxxxxxba') <_sre.SRE_Match object; span=(3, 11), match='bxxxxxxb'>
注意,对于正则表达式中大多数有效的转义序列,不需要转义反斜杠。例如\s在字符串中不是有效的转义序列,因此它将像那样传递给regex解析器;其他一些像\n和\t也不重要,因为它们在解析器中是这样的。还有\b(字符串中的bell,regex中的word boundary)和需要转义的back引用。你知道吗
\s
\n
\t
\b
另一种方法是使用原始字符串:
>>> re.search(r'([ab]).+?\1', 'dfebxxxxxxba') <_sre.SRE_Match object; span=(3, 11), match='bxxxxxxb'>
在back引用中使用double
\\
,如下所示:您需要正确地避开back引用。字符串
'\1'
等于'\x01'
,regex解析器不会将其用作后向引用。如果你能很好地逃脱它,它就会起作用:注意,对于正则表达式中大多数有效的转义序列,不需要转义反斜杠。例如
\s
在字符串中不是有效的转义序列,因此它将像那样传递给regex解析器;其他一些像\n
和\t
也不重要,因为它们在解析器中是这样的。还有\b
(字符串中的bell,regex中的word boundary)和需要转义的back引用。你知道吗另一种方法是使用原始字符串:
相关问题 更多 >
编程相关推荐