2013-12-12 35 views
0

很多感謝所有那些誰回答了這個問題的第1部分看到here正則表達式不連續的大寫單詞PART DEUX

爲我工作的正則表達式是

(?<![A-Z]\s)\b[A-Z]+\b(?!\s[A-Z]) 

現在的問題是如何做相反的,即給定字符串

這是一個不同的句子,在這裏有幾個大寫字母,還有跨越多個LINES。

如何匹配「CAPITAL WORDS」與「跨越有」,但不能匹配「WITH」或「LINES」,因爲它們是用小寫的話兩邊分離,或者也可以在句子的結尾處。

我試圖從負變爲正lookarounds和改變[A-Z]至[A-Z],但再次失敗壯觀

任何幫助將再次被大加讚賞。

+0

你能問少Frenchily? :D –

+0

哈哈OK會做:-) – user3012857

回答

0

至少兩個連續大寫的單詞:

[A-Z]{2,}(?:\s+[A-Z]{2,})+ 

[A-Z]{2,}   # first word (At least two letters) 
(?:     # do not capture this group 
    \s+[A-Z]{2,}  #     (whitespace and a word) 
)+     # one or more of/

In [52]: re.findall(r'[A-Z]{2,}(?:\s+[A-Z]{2,})+', 'CAPITAL Words This is a different sentence WITH a few CAPITAL\nWORDS here AND THERE ACROSS multiple LINES.') 
Out[52]: ['CAPITAL\nWORDS', 'AND THERE ACROSS'] 
+0

幾乎在那裏。這在下一個詞的開頭也會匹配大寫字母。 Caps的單詞必須至少有兩個字母長,並且它也不能匹配一個換行符,也就是WORD \ n下一個單詞,其中N是大寫的 – user3012857

+0

好吧,我認爲我有它[AZ] +(?:\ s + [AZ ] {2,})+ – user3012857

+0

是的,編輯。第一個單詞也應該是2個字母? –

相關問題