嵌套模式:为什么' *'正则表达式运算符在' +'之前停止

时间:2017-11-10 09:52:49

标签: regex regex-greedy

这是我正在处理的(简化)文本:

# header 1
Lorem ipsum

# random header
dolor si

# header 2
amet

我想抓住这个片段A:

# header 1
Lorem ipsum

# random header
dolor si

如果我使用正则表达式:# header 1(?:[^#]+|(?!# header 2)#)*,我会按预期获得摘录A.

但如果我使用正则表达式b:# header 1(?:[^#]*|(?!# header 2)#)*,我只会得到代码段B:

# header 1
Lorem ipsum

我希望在这两种情况下都能获得代码片段组件 - *案件中发生的事情会导致比赛过早停止吗?正则表达式的味道是php(链接到相关的regex101)。

仅供参考:我知道有更简单的方法来匹配这个片段,这种模式在未简化的版本中是有意义的。我解决了我的实际问题(类似于(?:[^#]|(?!# header 2)#)*+)现在我很想知道为什么这两个正则表达式a和b表现不同。

0 个答案:

没有答案