2013-11-26 143 views
0

我有一個類似2頁長的文本文件,我需要編寫一個正則表達式來提取以大寫字母開頭的單詞。 ,我想獲得(但不限於)有些詞的例子是:以大寫字母開頭的單詞的正則表達式

British Indian Ocean Territory 
People's Republic of China Confederation of Independent States 
French Southern and Antarctic Lands 
Gilbert and Ellia Islands 
Iraq-Saudia Arabia Neutral Zone 
Juan de Nova Island 
St. Vincent and the Grenadines 
Trust Territory of the Pacific 
Washington, D.C. 

,我想出了正則表達式是:

"((?:[A-Z][a-z]+\\s){2,4}?) || ((?:[A-Z][a-z]+\\s){1,2}of(?:\\s[A-Z][a-z]+){1,2}) || ((?:[A-Z][a-z]+\\s){1,2}and(?:\\s[A-Z][a-z]+){1,2})" 
+2

恭喜。那對你有用嗎? – 2013-11-26 18:54:31

+0

那麼......這個正則表達式有什麼問題嗎?如果是這樣,什麼? – ajp15243

+0

你試圖做的事情對正則表達式來說是不可能的,因爲你似乎想要提取的不僅是單個單詞而是表達式(例如:「中華民國獨立國家聯合會」)。請記住,不使用字典是不可能的。 –

回答

3

使用這個表達式

\b[A-Z].*?\b 

http://rubular.com/r/HG7YJLgkc3

REGEXPLANATION:

  • \b是一個字邊界。它開始匹配和0次以上,
  • ?使得以前*非貪婪的一句話結束
  • .匹配任何字符,
  • *匹配前面的字符,所以它的幾個字符,因爲它匹配可以代替的整串
+0

lolypoint +1 <°))))))))> –

+1

我需要「and」,「or」和「the」。這個正則表達式也不允許我得到所有格的結尾或連字符。 – user3013832

+0

如果您需要整行,請用'\'替換'\ b [A-Z]。*?$'替換最後一個'\ b'。那應該解決這兩個問題 –

0

這得到喲八九不離十:

(\b[A-Z].*?\b('s|-|\.|,)?(\s((the|and|of|de)\s)*)?)+ 

檢查:http://rubular.com/r/5LpVm0oKtu

+0

我需要「和」,「或」和「這個」。這個正則表達式也不允許我得到所有格的結尾或連字符。 – user3013832

+0

更新了正則表達式。 –

1

此正則表達式應該工作:

"\\b(([A-Z]\\S*)|and|or|the)\\b" 
+0

忘了提及我需要「和」,「或」和「這個」。 – user3013832

+0

@ user3013832:現在檢查更新的答案。 – anubhava

0

這是否會實現你在找什麼? [A-Z]\S*\s

您使用的正則表達式可能會隨實現而略有變化,您可能必須使用一些標誌來允許多行搜索和多個匹配。

相關問題