2012-11-19 88 views
1

給出字符串「abcdefgh」我如何匹配以「abcde」開始的所有字符串,它們不以「fgh」結尾?匹配的字符串不會以預定義部分結尾

更一般的任務 - 匹配字符串startin與某些通用模式,但不以任何預定義(排除)模式結束。

"\babcde(^fgh)\b" 

不起作用

+3

消極的前瞻應該解決這個問題。 –

回答

0

如果所需的前綴和後綴排除可能不重疊,你可以使用負前瞻。通過「串」,我假設你的意思是「字」:

"\babcde(?!\w*fgh\b)" 

如果前綴和後綴可能重疊,如果「字符串」你的意思是「絃動先行到前面

"\b(?!\w*fgh\b)abcde" 

「使用^$的邊界條件:

"^(?!.*fgh$)abcde" 

如果你想獲得這場比賽爲好,而不僅僅是測試字符串,包括」 STR的其餘ing「到正則表達式:

"^(?!.*fgh$)abcde.*$" 
0

您可以使用正則表達式:

^foo(?!.*bar$).*$ 

,匹配以foo開始,但bar不結束所有的字符串。

的部分^foo確保字符串開頭foo

(?!.*bar$)是負先行斷言,以確保在字符串中bar沒有結束的部分。

See it

相關問題