2016-03-22 86 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

很高興幫助,請考慮接受答案。 –

相關問題