2

Python で正規表現を使用して、ピリオドで区切られた頭字語を一致させようとしています。次のコードがあります。

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

この結果は次のとおりです。

['A.']

なぜこのような結果になったのか不思議です。+ が貪欲であることは知っていますが、[AZ]\ が最初に出現するのはなぜですか。無視?

4

2 に答える 2

4

説明

この正規表現は次のようになります。

  • U.S.A.文のようにすべての頭字語をキャプチャします
  • 文末の大文字の単語の一致を回避します

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

ここに画像の説明を入力

実際の例: http://www.rubular.com/r/9bslFxvfzQ

サンプルテキスト

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

マッチ

U.S.A
于 2013-07-22T04:18:51.337 に答える
3

(...)in regex はグループを作成します。次のように変更することをお勧めします。

pattern = r'(?:[A-Z]\.)+'
于 2013-07-22T04:07:11.303 に答える