目标文本示例:
foo
not_foo
bar
--
bar
foo
not_foo
--
bar
--
foo
bar
--
我想找到所有以 foo 开头并以 bar 结尾的文本,但仅限于同一个
--
块内。
所以预期的结果只会返回第一个
foo
not_foo
bar
还有最后一个 foo bar 块。
foo
bar
我尝试使用
foo.*?bar
进行多行正则表达式搜索,但它同时返回第二个和第三个块
foo
not_foo
--
bar
,应该被忽略,因为它们被
--
分隔。
想听听任何建议。 谢谢。
您可以使用负向先行模式来断言
foo
和 bar
之间的每个匹配字符后面都没有 --
:
foo(?:.(?!--))*bar
请注意,上面的模式假设您的工具支持单行模式,其中
.
匹配包括换行符在内的所有字符。如果没有,您可以使用类似 [\s\S]
的字符集代替 .
。