工学 > 情報技術 > プログラミング > 正規表現

Wikipedia
ウィキペディア正規表現の記事があります。

正規表現 (regular expression) とは文字列の集合を表現するための形式言語である。たとえば数字の並びで構成される文字列、空白文字から構成される文字列、メールアドレスの形をした文字列など、特定のパターンに一致する文字列を抽出したり、検索したりするのに用いられる。

概要編集

正規表現はさまざまなソフトウェアやプログラミング言語で採用されている。

このほかにgrepなどのUNIXコマンドラインプログラム、sed、awkなどのスクリプト言語、Emacsやvi、そしてedなどのテキストエディタも正規表現をサポートしている。

学習書を探すなら編集

市販のプログラミング入門書で正規表現についての書籍を探したいなら、歴史的な経緯により、Perlが比較的に古くから正規表現を本格的に採用しているので、Perlの入門書を読めば正規表現についても書かれていることが多い。

Perl以外の他のプログラム言語だと、オライリー本のような比較的に厚くて値段も高めの書籍でないと、正規表現の解説が掲載されていない場合も多い。

また、JavaScriptの正規表現は、なるべく Perl の正規表現に合わせてあります。(ただし、周辺の関数などは、JavaScript と Perl では比較的に違いが大きい。)


特にコダワリが無いなら、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" にマッチする。

関連書籍編集

このページ「正規表現」は、書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にトークへどうぞ。