2016-03-22 116 views
1

简单的正则表达式的问题..两个单词之间的正则表达式 - 或行尾?

我建立了一个非常基本的表达拉文两个字之间:

BEGN: (.*?)DETAIL: 

当这两个词的存在,工作正常,但在某些情况下没有“DETAIL :“所以在这些情况下,我只想捕捉到文本的末尾。这是可能的单个表达式,还是我需要某种类型的条件语句?

回答

2

如果尾随分隔符可以是不存在,使用tempered greedy token或展开之一:

BEGN: ((?:(?!DETAIL:).)*) 

查看一个regex demo

(?:(?!DETAIL:).)*匹配任何文本直到第一DETAIL:。您可以在D之前添加一个字边界\b,以便匹配DETAIL这是一个完整的词。

如果文本可以跨越多行,请不要忘记DOTALL修饰符。如果您使用的展开的版本,则不需要修改DOTALL:

BEGN: ([^D]*(?:D(?!ETAIL:)[^D]*)*) 

another demo

+1

辉煌。完美的作品,谢谢。 – Roger

+0

很高兴帮助,请考虑接受答案。 –

相关问题