首页 > 解决方案 > 如何从左到右运行非贪婪的正则表达式

问题描述

我有以下要匹配的字符串:

"data data and some stuff in the middle that can change, data data"

现在,如果我只想在字符串末尾提取一次“数据”,我使用一个惰性量词:

data\s.+?data

匹配:

"data data and some stuff in the middle that can change, data"

我如何从左到右做同样的事情,所以我只在字符串的开头拿起“数据”一次?

如果有人需要知道,我正在使用 Python 风格。

标签: pythonregex

解决方案


你有两个选择。首先是使用捕获组:

^\s*(?:data\s+)*(data\s.*?data)

在此处查看现场演示

您需要的是第一个捕获组。第二个是用data一个data在两端替换重复的 s 使用:

^(?:\s*data)+|(data\s*)+$

在此处查看现场演示


推荐阅读