Python正则表达式只捕获一个'and'

2024-04-28 22:58:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉python中的正则表达式。 假设我有这个字符串:

Blood and Sweat and Tears

如何捕获Blood and SweatSweat and Tears?你知道吗

我试过以下方法,但没有成功。你知道吗

>>> import re
>>> s = 'Blood and Sweat and Tears'
>>> re.findall('\w+\sand\s\w+', s)
['Blood and Sweat']
>>> re.findall('\w+\sand\s\w+\Z', s)
['Sweat and Tears']

Tags: and方法字符串importretearsfindallblood
2条回答

您实际键入的不是regex,而是您试图格式化字符串的方式。你知道吗

你必须用另一个反斜杠来避开所有的反斜杠。你知道吗

'\\w+\\sand\\s\\w+'

或者

你可以在你的字符串前面加一个“r”,这会告诉它为你格式化它。你知道吗

r'\w+\sand\s\w+'

使用此功能,您可以捕获重叠匹配:

re.findall(r'(?=(?:^|\s)(\w+\sand\s\w+))', s)

退货:

['Blood and Sweat', 'Sweat and Tears']

您可以使用以开头或空格(^|\s)开头但不包含它(?:)并包含匹配项的任何表达式

相关问题 更多 >