Python for Informaticas第11章の正則表現(2)


注:以下の文章の原文はDr Chares Severanceの『Python for Informaticas』から来ています。
11.1正規表現の文字マッチング
他の多くの特殊文字でより強力な正規表現を作成できます。最も一般的な特殊記号は、任意の文字にマッチするピリオド(「.」)です。以下の例では、正規表現は、F.m:「一致する」From:「Fxm:」「F 12 m:」「または」F!@m:「表現の中のピリオドは任意の文字にマッチするので、同様の文字列があります。

import re
 hand = open('mbox-short.txt')
 for line in hand:
  line = line.rstrip()
  if re.search('^F..m:', line):
   print line 
正規表現では、文字の任意の繰り返し回数を表すアスタリスク(*")とプラス記号("+")を組み合わせて表現を強くします。この中で、星番号は検索文字列の中で、マッチ文字は0回以上繰り返します。プラス記号は1回以上繰り返します。
以下の例では、重複したワイルドカードを使ってさらに検索範囲を縮小します。

 import re
 hand = open('mbox-short.txt')
 for line in hand:
  line = line.rstrip()
  if re.search('^From:.+@', line):
   print(line) 
文字列「From:+@」を検索すると、「From:」で始まる文字列にマッチします。続いて、一つ以上の任意の文字に続いて、「@」の文字列を追加します。これは以下のような行にマッチします。
From:[email protected]
この「.+」のワイルドカード拡張子は、すべてのコロンから@の文字にマッチします。
From:+@
プラス記号とアスタリスクの「わがまま」がいいとされています。たとえば、以下の文字列は最後の@文字に外挿されて一致します。
From:[email protected][email protected],and [email protected]
アスタリスクとプラス記号をこのように強欲にしなくてもいいですが、別の記号を追加する必要があります。貪欲な行為をどうやってオフにしますか?詳細なドキュメントを参照してください。
関連記事:
Python for Informaticas第11章正則表現(一)
Python for Informaticas第11章の正則表現(四)
Python for Informaticas第11章正則表現(二)に関する内容を紹介します。これからも更新し続けます。もっと素晴らしい内容に注目してください。