2013-07-22 108 views
2

我試圖在Python中使用正則表達式來匹配由句點分隔的縮寫詞。我有以下代碼:在Python中使用正則表達式尋找首字母縮寫詞

import re 
test_string = "U.S.A." 
pattern = r'([A-Z]\.)+' 
print re.findall(pattern, test_string) 

這樣做的結果是:

['A.'] 

我很困惑,爲什麼是這樣的結果。我知道+是貪婪的,但爲什麼是[A-Z]的第一次出現。忽略?

回答

3

正則表達式中的(...)創建一個組。我建議改爲:

pattern = r'(?:[A-Z]\.)+' 
+0

謝謝,這工作。我更加關注Python的正則表達式中的「組」。現在有道理。 – jmulmer

2

說明

此正則表達式將:

  • 捕獲所有的句子
  • 避免在一個句子
  • 結束匹配大寫單詞首字母縮寫像 U.S.A.

(?:(?<=\.|\s)[A-Z]\.)+

enter image description here

活生生的例子:http://www.rubular.com/r/9bslFxvfzQ

示例文字

This is the U.S.A. we have RADAR. 

匹配

U.S.A 
相關問題