我需要在python中的一个大字符串中的两个子串之间找到第一个字符串,并且我遇到了一些意想不到的行为。这是一个例子:
import re
str = 'STUFF start STUFF I CARE ABOUT end STUFF end STUFF end'
regex = re.compile('start.*end',re.DOTALL)
stufficareabout = regex.search(str)
print(stufficareabout.group())
我期待得到'开始STUFF我关心结束'的结果,但我反而得到'STUFF开始STUFF我关心结束STUFF结束STUFF结束'。我认为regex.search会返回它找到的第一个匹配项,这对我来说意味着它会在第一个“结束”匹配后停止,而不是一直持续到最后一个匹配。
答案 0 :(得分:0)
您可以将re.findall
与".*?"
:
import re
a, *_ = re.findall('start.*?end', 'STUFF start STUFF I CARE ABOUT end STUFF end STUFF end')
输出:
'start STUFF I CARE ABOUT end'