2016-09-23 23 views
0

之间的所有文本匹配这是我的文字正则表达式 - 如何给定词

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 

Online demo link

+1

'FUNCTION [\ s \ S] *?(?= \ nFUNCTION)' –

+1

哪种编程语言? – Jan

回答

1

您可以使用正则表达式tempered greedy token

FUNCTION(?:(?!FUNCTION)[\s\S])* 

regex demo

(?:(?!FUNCTION)[\s\S])*是与任何未启动FUNCTION字符序列的字符([\s\S])匹配的标记。基本上,就最终结果而言,它与FUNCTION\[\S\s\]*?(?=FUNCTION|$)类似,只是将惰性匹配转换为与下一个序列匹配的构造,而不要求其出现在末端,因此我们可以省略|$替代方案。

如果单词FUNCTION与制表符/空格包围一个单独的线出现,你可能会展开它

^[ \t]*FUNCTION[ \t]*(?:\r?\n(?![ \t]*FUNCTION[ \t]*$).*)* 

this regex demo(注意,使用了m多改性剂在这里)。

+1

谢谢。这正是我所寻找的 –