正規表現

メタキャラクタに馴染む_key-visual

はじめに

 ここからはメタキャラクタについての話が中心になります。

今までは、パターンの指定を通常の文字だけで記述してきました。(注:文字には、数字などの表意文字までをも含めた、広義の意味での文字をその前提としています。)

しかし、パターンの表記には通常の文字の他に、メタキャラクタと言われるな特殊な意味を持つ文字を使うことができます。

 メタキャラクタ(Metacharacter)についてですが、唐突に個別の意味を説明するのではなく、まずは大まかに分類してみましょう。

例えば以下のような、マッチの対象となる文字列があったとします。


        apple
                        

 見ての通り文字列は、 a pp それから le の文字で構成されています。

各々文字に対する作用の仕方により、メタキャラクタを区分けしていきます。

繰り返し

 直ぐ目に留まるのが p という文字が2個あるという事です。

それ故、appleppという箇所は、文字列パターン "p" の2回の繰り返しにマッチします。

このような繰り返し構造をその対象としているメタキャラクタが、 量指定子 と呼ばれているものです。

範囲を広げて

 さて今度は、ap といった文字そのものについて着眼してみましょう。

ap という文字は、当然ながらアルファベットの一部です。

そこでパターンの構築を、 "p" という単一な文字ではなく、範囲を広げてアルファベットという集合で構成するとします。

その集合の中から1文字分を取り出すと考えれば、a にも p にも le でも全てマッチします。

パターンをアルファベットとするならば、それの5回の繰り返しになるというわけです。

 このようにパターンに範囲を持たせて集合にした場合に、それを規定するのが 文字クラス というメタキャラクタです。

位置

 さらに見方を変えてみます。

文字そのものではなく、位置に注目します。

すると、a最初 にあり 最後e になっています。

最初・最後 のような位置に対応しているメタキャラクタが、言明(アサーション) です。

 位置については、最初 や 最後 のようなものだけでなく、特定の文字の 前 や 後 なども考える事が出来ます。

例えば、今一度 p という文字に注視してみます。

2つ並んだ p につき違いを考えてみます。

すると、2番目の p は一つの文字が a であるが、3番目の p はそうではない。

3番目の p後ろの文字が l であるが、2番目はそうではない。

 というように、特定の文字の前後関係に着眼すれば、2つの p の相違を捉える事ができます。

これは、言明(アサーション)の中でも 先読み後読み と言われているメタキャラクタになります。

その他

 その他として、グループ機能などを定めているメタキャラクタもあります。



 これでメタキャラクタにつき、大凡のイメージをもてました。

次回からは、メタキャラクタの詳細を解説していきます。

関連記事

エスケープ文字の働き_key-visual

\ エスケープ文字の働き

正規表現: メタキャラクタの概要
難度       : 入門〜基礎
事前知識: Pythonの基礎文法
学習効果: エスケープ文字の働きを理解できる。
基礎1

[ ] 文字集合を指定する

正規表現: 文字クラス
難度       : 基礎
事前知識: Pythonの基礎文法(reモジュールを含む)
学習効果: 文字クラスを細部まで理解できる。
Pythonで正規表現を使う1

正規表現をPythonから使うには ?

正規表現: Pythonから使う
難度       : 入門
事前知識: Pythonの基礎文法
学習効果: pythonから正規表現を使う一連の流れを掴む
正規表現の概要

正規表現とは?

正規表現: 概要
難度       : 入門
事前知識: 不要
学習効果: 正規表現の概要を知る
正規表現の概要

PR