python - 如何在单个字符串中查找多个短语?

标签 python

到目前为止

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/

相关文章:

Python:如何用数据框中的条件替换 NaN?

javascript - 从数据库读取并传递给 Flask 中的 JavaScript

python - 使用python、psycopg2和postgresql在python中直接引用列名

python - 使用 OpenCV 图像提供 Inception

php - 文档大小超过 32 MB 的 no-sql 数据库?

python - pandas DataFrame 中的 DatetimeIndex 冲突

python - 如何退出所有已加入的进程以防任何一个进程出现异常 - Python

python - 使用 CX_freeze 创建多个 .exe 文件

python - 将 pandas 过滤器应用于数据帧会得到一个充满 NaN 的数据帧

python - 如何将坐标值 append 到坐标数组?