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