2016-02-05 78 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

相关问题