「正規表現」の版間の差分

削除された内容 追加された内容
編集の要約なし
編集の要約なし
1 行
{{Pathnav|工学|情報技術|プログラミング}}
{{Wikipedia|正規表現}}
正規表現 (regular expression) とは文字列の集合を表現するための[[形式言語]]である。プログラミング言語において、たとえば数字の並びで構成される文字列、空白文字から構成される文字列、メールアドレスの形をした文字列など、特定のパターンに一致する文字列を抽出したり、検索したりするのに用いられる。
 
== 概要 ==
正規表現はさまざまなソフトウェアやプログラミング言語で採用されている。
 
* プログラミング言語
** [[Java]]
** [[JavaScript]]
** [[Perl]]
** [[PHP]]
** [[Python]]
** [[Ruby]]
 
このほかにgrepなどのUNIXコマンドラインプログラム、sed、awkなどのスクリプト言語、Emacsやvi、そしてedなどのテキストエディタも正規表現をサポートしている。
 
== 文法 ==
ここでは特定のプログラミング言語やライブラリソフトウェアによらない基本的な正規表現の文法を大まかに解説し、個々の文法や具体的なパターンマッチの方法については別に扱う。
 
{| class="wikitable"
|+ 正規表現のメタ文字の一覧
! メタ文字
! 意味解説
! 備考
|-
| .
| 任意の1文字にマッチする。たとえば <code>.ook</code> という正規表現は "book" や "cook" などにマッチする。多くのプログラミング言語においてはデフォルトでは改行文字にはマッチせず、フラグを指定することによってマッチするように挙動が変わる。
| 任意の1文字
| 通常は改行文字を除く
|-
| +
| 直前の文字の1文字以上の繰り返し。たとえば <code>Goo+gle</code> という正規表現は "Google" や "Gooogle"、"Goooooooogle" などにマッチするが、"Gogle" にはマッチしない。
| 直前の文字の繰り返し
|-
| *
| 直前の文字の0文字以上の繰り返しもしく。たとえば <code>.*</code> という正規表現任意の1文字の0文字以上の繰り返しなので、すべての文字列にマッチする。
|-
| <nowiki>?</nowiki>
| 直前の文字の0回または1回の繰り返し。直前の文字があってもなくてもマッチすることを意味する。たとえば <code>s?he</code> は "she" にも "he" にもマッチする。
| 直前の文字もしくは空文字列
|-
| []
| ブラケットの中の任意の1文字にマッチする。たとえば <code>[bcl]ook</code> は "book" と "cook" と "look" にマッチする。
|-
| ()
| 正規表現をグループ化する。括弧の中の文字列を1つのかたまりとして扱う。たとえば <code>Wiki(books)?</code> は "Wiki" または "Wikibooks" にマッチする。
|}