#contents

*正規表現とは [#q70426b3]
文字列のパターンを一つの形式で表現する表記法。主に文字列の検索・置換を行なうときに利用される。

*参考リンク [#r3ef2211]
:[[Regular Expression(Riue ちゃんの正規表現講座)>http://www.sixnine.net/regexp/index.html]]|
読み物調で分り易い。初心者におすすめ。
:[[正規表現メモ>http://www.kt.rim.or.jp/~kbk/regex/regex.html]]|
grep,egrep,sed,awk,perl,python,ruby,gawk,Tcl,PCRE,PHP,.NET Framework,Java,POSIXの各ツールで使える演算子辞典。
:[[正規表現最新リンク集>http://www2.famille.ne.jp/~akio1998/l_grep.html]]|
関連リンク集。
:[[PHPパターン構文>http://jp.php.net/manual/ja/pcre.pattern.syntax.php]]|
PHPで使える正規表現。

*文法 [#m693c9ec]
以下は、Perl/PHPでの表現。
**基本 [#b3eb349c]
|~正規表現|~意味|h
|A|文字A|
|ABC|文字列ABC|
|.|任意の1文字|
|A*|0文字以上のA|
|A?|0文字または1文字のA|
|A+|1文字以上のA|
|^A|Aで始まる文字列|
|A$|Aで終わる文字列|
|[ABC]|A、B、Cのいずれか1文字|
|[A-C]|A~Cまでのいずれか1文字|
|[^ABC]|A、B、Cのいずれでもない任意の1文字|
|ABC|DEF|GHI|ABCまたはDEFまたはGHI|
|A{2}|2個のA(AA)|
|A{2|}|2個以上のA(AA、AAA、AAAA、...)|
|A{2|3}|2個~3個のA(AA、AAA)|

**メタキャラクタ [#n45b271d]
「\」+ 文字(列)は特殊な意味を持つ。

***特殊文字の表現 [#ve5a038e]
|~表記|~意味|h
|\a|アラーム、ベル文字 (16進 07)|
|\cx|"control-x" ただし x はあらゆる文字|
|\e|エスケープ (16進 1B)|
|\f|改ページ (16進 0C)|
|\n|改行 (16進 0A)|
|\r|復帰 (16進 0D) |
|\t|タブ (16進 09)|
|\xhh|16進数で hh の文字|
|\ddd|8進数で ddd の文字または後方参照|
|[\b]|バックスペース (文字クラスの中でのみ有効)|

***文字型の表現 [#f25d3738]
|~表記|~意味|h
|\d|10進数字|
|\D|10進数字でない全ての文字|
|\s|空白文字|
|\S|空白文字以外の文字 |
|\w|単語構成文字 |
|\W|単語構成文字以外|

***言明 [#s3d17b0c]
検索時の拘束条件を指定する。(文字クラス外のみ)
|~表記|~意味|h
|\b|単語の境界 |
|\B|単語の境界でない |
|\A|検索対象の始まり (複数行モードとは独立) |
|\Z|検索対象の終わりまたは終端の改行 (複数行モードとは独立) |
|\z|検索対象の終わり (複数行モードとは独立)|

**クラス [#ib90ad03]
|~クラス名|~意味|h
|[:alnum:]|アルファベットと数字|
|[:alpha:]|アルファベット|
|[:lower:]|アルファベットの小文字|
|[:upper:]|アルファベットの大文字|
|[:digit:]|10進数字|
|[:xdigit:]|16進数字|
|[:blank:]|空白文字(スペース、タブ等)|
|[:space:]|スペース、タブ、改ページ|
|[:punct:]|句読点|
|[:cntrl:]|制御文字|
|[:graph:]|印字可能かつ表示可能な文字(スペースは含まれない)|
|[:print:]|印字可能なキャラクタ(=制御文字以外)|

~
RIGHT:カテゴリ : [[Program>:Category/Program]]