如何匹配带有正则表达式的startlabel和空行或endlabel之间的内容?
例如regex101链接:
<START> some text is here.
more text
unrelated text
<START> even more text.
text text
<STOP>
Run Code Online (Sandbox Code Playgroud)
它应该匹配两个匹配项
<START> some text is here.
more text
Run Code Online (Sandbox Code Playgroud)
和
<START> even more text.
text text
<STOP>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我提出的正则表达式如下(但由于(?s)。*部分,它与全文匹配)。
<START>((?s).*)(\s\s|<STOP>)
Run Code Online (Sandbox Code Playgroud)
您应该使用一个懒惰量词为.*为它可以匹配尽可能少。使用.*?:
(?s)(<START>.*?)(?:(?:\r*\n){2}|<STOP>)
Run Code Online (Sandbox Code Playgroud)
将您指定为结束条件的内容排除在组之外。
(?:\r*\n){2} 空行。<STOP> 结束标签。