这是我的文字
FUNCTION 1
Some text
FUNCTION 2
Some text
FUNCTION 3
Some text
我想获得以下匹配
匹配1
FUNCTION 1
Some text
匹配2
FUNCTION 2
Some text
匹配3
FUNCTION 3
Some text
到目前为止我提出的模式是
FUNCTION[\s\S]*FUNCTION
答案 0 :(得分:1)
您可以使用tempered greedy token正则表达式:
FUNCTION(?:(?!FUNCTION)[\s\S])*
请参阅regex demo
(?:(?!FUNCTION)[\s\S])*
是匹配任何未启动[\s\S]
字符序列的char(FUNCTION
)的标记。基本上,就最终结果而言,它类似于FUNCTION\[\S\s\]*?(?=FUNCTION|$)
,只是将惰性匹配转换为与下一个序列匹配而不要求它出现在结尾的构造,因此我们可以省略|$
替代方案。
如果单词FUNCTION
出现在用标签/空格包围的单独行上,您可以将其展开为
^[ \t]*FUNCTION[ \t]*(?:\r?\n(?![ \t]*FUNCTION[ \t]*$).*)*
请参阅this regex demo(请注意此处使用m
多线修改器)。