这是我正在处理的(简化)文本:
# 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表现不同。