| Top Page | プログラミング | Perl 目次 | パターンマッチ | 索引 |
メタ文字は,その文字自体を意味するのではなく,特別な意味を持つ文字です. メタ文字を、特別ない見ではなく文字通り「そのまんま」の意味で使いたいたきには,前に \ を付ける必要があります.
メタ文字 | 意味 | 例 |
---|---|---|
. (ピリオド) | 任意の文字 | /a.c/
a と c の間に任意の文字がひとつ |
^ | 文字列の先頭 | /^a/
a で始まる文字列 |
$ | 文字列の末尾 | /b$/
b で終わる文字列 |
+ | 直前の文字がひとつ以上連続 | /ab+/
a のあと,ひとつ以上の b が連続 |
* | 直前の文字が 0 個以上 | /ab*/
a のあと,0個以上の b が連続 |
? | 直前の文字が 0 個か1個 | /ab?/
a か,ab |
[] | カッコ内の文字のどれかひとつ | /c[au]t/
cat か cut |
[-] | 範囲内の文字のどれかひとつ | /c[a-z]t/
c と t のあいだに,a から z のうちの一文字 |
{n} | n 回の繰り返し | /a{10}/
a が 10 個連続 |
{n,} | n 回以上の繰り返し | /[CG]{5,}/
C ないし G が 5 個以上連続 |
{n,m} | n 回以上 m回以下の繰り返し | /[CG]{5,10}/
C ないし G が 5 個以上10個以下連続 |
( | ) | | で区切られたパターンのどれか | /(tree|shrub|bush)/
tree か shrub か bush のどれか |
\ | 特別な意味を持つ文字を、その文字そのものにする | /.+\.$/
任意の文字1つ以上の連続のあと,末尾にピリオド |
※ () で囲む表現では, | はひとつもなくてもよい.() 中のパターンに マッチした文字列は特殊な変数($1, $2,...)に自動的に代入されるので, あとで利用できます.また,後方参照にも使われます.これらについては, 以下に説明が出てきます.
エスケープシーケンスは,\ のあとに特定の文字を並べたもので, その文字自体ではなくて特別な意味を持ちます.
エスケープシーケンス | 意味 | 例 |
---|---|---|
\s ( s は小文字) | 空白文字(空白,タブ,改行) | /\s+/
ひとつ以上の空白文字の連続 |
\S ( S は大文字) | 非空白文字 | /\s\S+\s/
前後を空白文字で囲まれた,非空白文字の連続 |
\d ( d は小文字) | 数字( 0 から 9 ) | /\d\d-\d\d\d\d/
数字が2つ,ハイフンのあと数字が4つ. |
\D ( D は大文字) | 数字以外の文字 | /\D\d/
数字以外の文字ひとつのあとに数字がひとつ |
\w ( w は小文字) | 英数字と _ | /^\$[a-zA-Z_]\w+/
最初が $, 次がアルファベットか下線,そのあと英数字か下線が任意個(Perl のスカラー変数の名前のパターン) |
\W ( W は大文字) | \w 以外の文字 | /^\W\w+/
英数字や _ 以外の文字で始まり,そのあと1個以上の英数字ないしは _ が続く |
\1, \2,... | () で括ったパターンにマッチした文字列 | /([ATCG][ATCG])\1{4,}/
ATCG のうちの2文字の組み合わせの 5 回以上の繰り返し |
\t | タブ | |
\n | 改行 |
パターンマッチと関係した特殊変数(Perl があらかじめ用意してくれる, 怪しい名前の変数)がいくつかあります.
特殊変数 | 意味 | 例 |
---|---|---|
$& | 文字列の,パターンにマッチした部分 | "AB123CD" =~ /\d+/;
$& には \d+ にマッチした "123" が代入される |
$` | 文字列の,パターンにマッチした部分より前の部分 | "AB123CD" =~ /\d+/;
$` には "123" の前の "AB" が代入される |
$' | 文字列の,パターンにマッチした部分よりうしろの部分 | "AB123CD" =~ /\d+/;
$' には "123" のうしろの "CD" が代入される |
$1, $2,...' | パターン中の,() で囲まれた部分にマッチした文字列 | "AB123CD" =~ /(\d+)(\D+)/;
$1 には (\d+) とマッチした"123" が, $2 には (\D+) とマッチした "CD" が代入される |
\1, \2,...と,$1, $2,... とを混同しないように気をつけてください.
\1, \2, ...を使って,前のほうのパターンに マッチした文字列を 参照することを後方参照と呼びます.