2013-12-21 55 views
0

到目前爲止,我有這個正則表達式匹配所有內容直到找到2個大寫字符?

(?:(?![A-Z]{2,}).)* 

它匹配的一切,直到的HTTPHeader,但是我希望它停止時,看到的HTTPHeader

如何做到這一點?

所以,如果我有串狀Http is an HttpHeader

應該匹配Http is an

+0

這是否意味着當您看到相同的兩個大寫字符時您想要匹配?這是否意味着'HttpHeader'中的匹配應該是'HttpH'? – Jerry

+0

它應該看到HttpHeader並停止,編輯 – user3117904

+0

所以,如果字符串是:'Http是一個很好的頭',它應該匹配'Http是一個很好'?如果你有'Http是一個不錯的選擇',它應該匹配'Http是一個好的'嗎? – Jerry

回答

0

也許你可以使用這樣的:如果一個詞有兩種

^(?:(?!(?:\S*[A-Z]){2}).)+ 

regex101 demo

(?:\S*[A-Z]){2}將只匹配大寫字符。

而且由於這是一個負向前瞻,只有在發現有兩個大寫字母的單詞時,匹配纔會停止。

+0

如果您在那裏使用'[^ ​​\ sA-Z] *'而不是'\ S *',它可能實際上會更快一些。 – Jerry

+0

YESS的作品,非常感謝和mudkips – user3117904

+0

@ user3117904 Mudkip,泥!!! ^^ – Jerry

0

使用傑裏的建議,這種模式是更有效
^.*(?=\b(?:[^\sA-Z]*[A-Z]){2})Demo

0
(.*?(?=[A-Z]\S*[A-Z])) 

我們爲什麼要讓人很難? Live demo

相關問題