我是python正则表达式的新手。 说我有这个字符串:
Blood and Sweat and Tears
如何捕获Blood and Sweat
和Sweat 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']
答案 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+'