在python中找到两个子串之间的第一个字符串

时间:2018-06-12 02:51:28

标签: python regex

我需要在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会返回它找到的第一个匹配项,这对我来说意味着它会在第一个“结束”匹配后停止,而不是一直持续到最后一个匹配。

1 个答案:

答案 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'