两个单词之间的正则表达式 - 还是行尾?

时间:2016-03-22 16:24:31

标签: regex

简单的正则表达式问题..

我有一个非常基本的表达式,用于在两个单词之间拉出文本:

BEGN:  (.*?)DETAIL:

当两个单词都存在时哪个有效,但在某些情况下没有" DETAIL:"所以在那些情况下我只想捕捉到文本的结尾。这可能是单个表达式,还是需要某种类型的条件语句?

1 个答案:

答案 0 :(得分:2)

如果可以缺少尾随分隔符,请使用tempered greedy token或展开的分隔符:

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

查看regex demo

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

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

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

请参阅another demo