正規表現って何?

正規表現とは?

書物やいくつかのサイトから引用:

「特定の文字列そのものを完全に表現するのではなく、ある条件を満たす文字列を表現するための標準的な記法」
SoftwareDesign2013May 誰にでも役立つ正規表現

「正規表現(せいきひょうげん、regular expression)とは、文字列の集合を一つの文字列で表現する方法の一つ」
wikipedia

「正規表現とは、文字列内で文字の組み合わせを照合するために用いられるパターン」
MDN

以下wikipediaより抜粋

もともと正規表現は形式言語理論において正規言語を表すための手段として導入された。

その後正規表現はテキストエディタ、ワードプロセッサをはじめとするアプリケーションソフトでパターンマッチ文字列を表すために使用されるようになり、表せるパターンの種類を増やすために本来の正規表現にはないさまざまな記法が新たに付け加えられた。

このような拡張された正規表現には正規言語ではない文字列も表せるものも多く、ゆえに正規表現という名前は実態に即していない面もあるが、伝統的に正規表現と呼ばれ続けている。

ほとんどのプログラミング言語では、構文またはライブラリによって正規表現を使うことができるようになっている。構文やライブラリに正規表現を備えたプログラミング言語やユーティリティとして、AWK、Sed、Perl、Python、Ruby、Java、JavaScript、PHPなどがある。

⇒要するにソフトやプログラミングにおいて正規表現を用いた文字列のパターンマッチを行う機能のことを、単に正規表現ということが多い。

正規表現で何ができる?

MSDNより引用
一般的な検索処理と置換処理では、文字列を正確に指定する必要があります。静的テキストを対象とする単純検索や置換作業には十分かもしれませんが、動的テキストでは柔軟性に欠け、検索が困難になる場合もあります。

正規表現を使用すると、次のことが可能になります。

  • 文字列内のパターンのテスト。たとえば、入力文字列をテストして、文字列内に電話番号またはクレジットカード番号のパターンがあるかどうかをチェックできます。これをデータ確認と呼びます。
  • 文字列の置換。正規表現を使用して、ドキュメント内にある文字列を特定し、削除したり、ほかの文字列と置換できます。
  • パターン マッチに基づく、文字列からのサブ文字列の抽出。ドキュメントまたは入力フィールド内の特定の文字列を検索できます。

たとえば、Web サイト全体を検索して、日付の古いものを削除したり、HTML タグを置換したりする必要がある場合に、削除対象のものや置換対象の HTML タグがファイルに存在するかどうかを正規表現を使用して確認できます。削除対象または置換対象のものだけが含まれるファイルを絞り込むことができます。このようにして、正規表現を使用して日付の古いものを削除し、置換対象のタグを検索して置換できます。

よくつかわれる用語

パターン:
正規表現によって表わされる文字列。正規表現パターンともいう.

文字:
正規表現においては全角文字,半角文字,記号,空白文字を指す(改行は除く)

メタキャラクタ(メタ文字):
パターンに用いられる”.”や”[ ]“などの特殊な文字

特殊シーケンス:
dやwなどの数字,小文字・大文字などを表す特殊な意味を持つ文字のこと。

マッチ:
ある文字列と正規表現パターンが一致すること。

メタキャラクタ(メタ文字)の例

文字列のパターンを表現するために正規表現は、”メタキャラクタ” という特殊文字を使います。メタキャラクタには例えば”.”(ピリオド)があります。”.”(ピリオド)は任意の一文字を表すメタキャラクタです。例えば

‘a.b’というパターンであれば
マッチするのは
‘aab’, ‘acb’, ‘a9b’などの文字列で、
マッチしないのは
‘aaab’, ‘bab’, ‘aac’などの文字列です。

str_list = (‘aab’, ‘acb’, ‘a9b’, ‘aa45b’, ‘bab’, ‘aac’)
for s in str_list:
print s
print re.sub(‘a.b’, ‘-MATCHED-’, s)
<結果>
aab
-MATCHED-
acb
-MATCHED-
a9b
-MATCHED-
aa45b
aa45b
bab
bab
aac
aac

カテゴリー: コラム   パーマリンク

コメントは受け付けていません。