Python正则表达式仅捕获一个“和”

时间:2018-06-28 15:02:35

标签: python regex python-3.x

我是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']

2 个答案:

答案 0 :(得分:1)

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

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

返回:

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

正向超前?=)以开头或空格(^|\s)开头但不包含(?:)并且包含您的匹配项的任何表达式< / p>

答案 1 :(得分:0)

您实际上键入的不是正则表达式,而是您尝试格式化字符串的方式。

您必须用另一个反斜杠转义所有反斜杠。

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

OR

您可以在字符串的前面放置一个“ r”,这将告诉它为您设置格式。

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