2016-02-05 72 views
0

我想在文本中找到所謂的首字母縮寫詞,這是爲它定義正則表達式的正確方法嗎? 我的想法是,如果某件事以大寫字母開頭並以大寫字母結尾,那麼它就是首字母縮寫詞。它是否正確?正確的正則表達式在Python中的首字母縮寫詞

import re 
test_string = "Department of Something is called DOS, 
or DoS, or (DiS) or D.O.S. in United State of America, U.S.A./ USA" 
pattern3=r'([A-Z][a-zA-Z]*[A-Z]|(?:[A-Z]\.)+)' 
print re.findall(pattern3, test_string) 

和出放爲:

['DOS', 'DoS', 'DiS', 'D.O.S.', 'U.S.A.', 'USA'] 
+2

你想知道你的正則表達式是否正確或者您的首字母縮寫是否合適? –

+3

不符合維基百科的定義。 [首字母縮寫是一個發音爲一個詞的縮寫。它們由短語或單詞中的最初組成部分組成 - 通常是單個字母(如北約或激光);或部分文字或名稱(如比荷盧經濟聯盟)。](https://en.wikipedia.org/wiki/Acronym) –

+1

你可能會獲得大部分。但是,您不會得到數字(3D)或週期性元素(Ni)或小寫字母(lb.即)的首字母縮略詞,儘管這些縮寫可能比縮寫詞更好。 –

回答

1

認爲可以使用的字邊界\ b主播你想要做什麼

>>> regex = r"\b[A-Z][a-zA-Z\.]*[A-Z]\b\.?" 
>>> re.findall(regex, "AbIA AoP U.S.A.") 
['AbIA', 'AoP', 'U.S.A.'] 
+0

感謝您的清潔正則表達式。你能否說出爲什麼邊界在你的想法中更好? – Rebin

相關問題