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


正規表現は、正規表現法、従来表現法(英語:Reglar Expression、コードの中でよくregex、regexpまたはRE)とも呼ばれ、コンピュータ科学の概念です。正規表現は単一の文字列を使用して、ある構文規則に合致する一連の文字列を記述します。多くのテキストエディタでは、正規表現は通常、あるパターンに該当するテキストを検索、置換するために使われます。
注:以下の文章の原文はDr Chares Severanceの『Python for Informaticas』から来ています。
今まで私達はずっとファイルを読んでいます。モードを探して、行間に興味がある各種情報を抽出しています。私たちは常にSPlitとfindのような文字列方法とリストと文字列のスライス機能を使って行の一部を抽出しています。
このような検索と抽出のタスクは一般的であるので、Pythonは非常に強力なライブラリ――正規表現を持っており、これらのタスクを優雅に処理しています。正規表現を早く紹介しなかったのは、それらは強いが、やや複雑で、文法に慣れる時間が必要だったからです。
正規表現は文字列を検索して解析するための小型のプログラミング言語に近いです。実際には、正規表現については完全な本を書くことができます。この章では、私たちはその基礎にしか触れません。正規表現の詳細情報を取得するには、下記を参照してください。
http://en.wikipedia.org/wiki/Regular_expression
http://docs.python.org/library/re.html
正規表現を使う前に、ライブラリファイルをあなたのプログラムに導入しなければなりません。正規表現の最も簡単なアプリケーションはsearch()関数で、以下の手順でsearch関数の小さいアプリケーションを実証します。

import re
hand = open('mbox-short.txt')
for line in hand:
line = line.rstrip()
if re.search('From:', line):
print(line) 
mbox-shartファイルを開いて、各行を循環して読み取り、正規表現のsearch()で「From:」という文字列を含む行を検索し、これらの行をプリントアウトします。このプログラムは正規表現の真の能力を使っていません。私たちは簡単にLINE.find()を使っても同じ結果が得られます。
検索文字列に特殊な文字を追加すると、マッチする文字列の行をより正確にコントロールできるようになり、正規表現の能力が現れ始めます。正規表現に特殊な文字を追加すると、非常に少ないコードで複雑なマッチングと抽出ができます。
たとえば、正規表現では、行の開始にマッチする記号^を挿入します。私達は文字を検索する前に挿入子を追加すると、プログラムを印刷と一致するだけに変更できます。

import re
hand = open('mbox-short.txt')
for line in hand:
line = line.rstrip()
if re.search('^From:', line)
print(line) 
今は「From:」で始まる行だけに合わせます。この簡単な例は文字列ライブラリのstarts with()方法でも同じように実現できます。この例は特殊な文字を含む正規表現がより強い制御を与えるという概念を教えてくれます。
注:原文のコードは2.7版です。自分で使うのは3.4版なので、print lineをprintに修正します。
関連記事:
Python for Informaticas第11章正則表現(一)
Python for Informaticas第11章の正則表現(2)
Python for Informaticas第11章の正則表現(四)
Python for Informaticas第11章正則表現(一)に関する内容を紹介します。これからも更新し続けます。もっと素晴らしい内容に注目してください。