Perl Perl_0 正規表現
Perl 「 正規表現 」: 演算子とメタキャラクタ (0x58)

目次 - Perl Index
Theme
Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0x57 回。
Perl の「 正規表現 」( Regular expression ) の演算子とメタキャラクタについて。
正規表現の演算子
Perl の正規表現は、「 m// 」、「 s/// 」、「 qr// 」、「 split 」の一部だと言います。
つまり、Perl で正規表現を利用する場合は、これらの演算子とセットで利用することになります。
また、マッチングの対象とパターンを繋ぐ演算子として「 Perl で正規表現を少しだけ説明 (0x18) 」で登場した「 =~ 」を利用します。
これは等号「 = 」( Equal sign ) と、チルダ (チルド) 「 ~ 」( tilde ) を組み合わせたものですが、マッチングの対象が暗黙のスカラ変数 $_ だった場合は不要です。
メタキャラクタ
正規表現で扱う文字 ( Character ) の中で、特別な意味を付加されたいくつかの文字があります。
特別な意味を持つ代表的な文字は次の様なものです。
\ (backslash) # 直右のメタ文字をエスケープ
^ (caret) # 行の先頭にマッチング
. (period) # (改行以外の) 任意の 1 文字にマッチング
$ (dollar sign) # 行末にマッチング (または改行の前)
| (pipe) # 代替 ((a|b) a または b)
() (parenthesis) # グループ化
[] (bracket) # 文字クラス
これらの特別な文字は「 メタキャラクタ (メタ文字) 」( Metacaracter ) と総称します。
「 メタ 」( Meta ) とは、ギリシャ語由来の接頭語で、「 - の間の 」「 - の後ろの 」「 - を含む 」や「 変化 」「 変成 」、「 超越 」「 高次な - 」等の意味を持ちます。
Wikipedia には、狭義のメタとして
「 ある対象を記述したものがあり、さらにそれを対象として記述するものを、メタな○○、あるいは単にメタ○○と呼ぶ。」
とあり、広義には
「 何かを取り込んだ何か、何かについての何か、といったものがメタと呼ばれる場合がある。」
とあります。
狭義の例としては、「 言語を記述する言語 - メタ言語 」や「 文法を記述するための文法 - メタ文法 」が上がっており、 広義の例としては、「 小説内で語られる小説 」や「 映画の中で描かれる映画 」が上がっています。
このことから僕は、
「 特定の対象に対する表現を、その対象に対する表現であると表現するための特定の表現 」
だと理解しています。
つまり、上に挙げた「 メタキャラクタ 」( の一部 ) は、「 特定の文字を表現するための文字として表現された特定の文字 」だということです。
0x58 -> 0x59 へ
メタについて分かりやすく (?) まとめてあるページがありました。
「 哲学するIT ITする哲学 - メタとは何か? 自己言及の世界の危険と不思議そして語ることの重要性 」
Perl とは関係ありませんが、コンピュータサイエンスから自己言及のパラドクス、語ることの重要性へと続く興味深い話です。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)