到目前为止
s = 'the fish walked start234stop down to the start879stop kajsdasdas'
result = re.findall('start(.*)stop', s)
print(result)
结果
['234stop down to the start879']
预期的结果是
['234']
[' 879']
有没有一种优雅的方式来实现这一点?虽然目前它只需要处理 2 个短语,但我的目的是让它输出找到的尽可能多的短语,每个短语都以这种方式格式化。
最佳答案
您匹配太多,因为 *
字符是贪婪的。这意味着它将在搜索结束之前尽可能多地匹配,因此只有在找到可搜索字符串中的最后一个 stop
时才会停止。
您可以通过在星号后面添加问号来使其“非贪婪”。这样,一旦它开始匹配后找到第一个“停止”,它就会停止匹配。
result = re.findall('start(.*?)stop', s)
关于python - 如何在单个字符串中查找多个短语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58586838/