| 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, ...を使って,前のほうのパターンに マッチした文字列を 参照することを後方参照と呼びます.



| Top Page | プログラミング | Perl 目次 | パターンマッチ |