正規表現
ナビゲーションに移動
検索に移動
正規表現 (regular expression) とは文字列の集合を表現するための形式言語。非形式的に言うならば、特定のパターンに一致する文字列を抽出したり、検索したりするのに用いられる。
概要[編集]
正規表現はさまざまなソフトウェアやプログラミング言語で実装されている。
このほかにgrepなどのUNIXコマンドラインプログラム、sed、awkなどのスクリプト言語、Emacsやvi、そしてedなどのテキストエディタも正規表現をサポートしている。
学習書を探すなら[編集]
一番手っ取り早いのはまず先に、自身が扱っているプログラミング言語についての本で、正規表現について解説されている本を探すことである。そのような本が存在しない場合は、大体の正規表現の方言の派生元である、Perlの本を読んでも、派生元であるため、そのまま扱えることが多い。
文法[編集]
ここでは特定のプログラミング言語やソフトウェアによらない基本的な正規表現の文法を大まかに解説し、個々の文法や具体的なパターンマッチの方法については別に扱う。
メタ文字 | 解説 |
---|---|
. | 任意の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" にマッチする。
|