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

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

正規表現( regular expression )とは、文字列のマッチパターンを表現する方法です。 正規表現を使うと、テキスト・データ・レコード内の特定のパターンにマッチする文字列を探し出して修正することができ、テキスト・データを操作するユーティリティ・プログラムやプログラミング言語でよく使われます。 正規表現は非常に強力です。

サポートしているソフトウェア編集

正規表現は、コマンドラインツール、プレーンテキストエディタ、プログラミング言語など、さまざまなソフトウェアツールでサポートされています。 これらのツールのほとんどは、Linux、Windows、Mac OS Xなどの様々なコンピューティングプラットフォームで利用できます。 これらのツールは、それぞれ微妙に異なる構文を採用しています。いくつかの注目すべきものを見てみましょう。

正規表現を使用するツールは以下の通りです。

コマンドラインツール
grep
egrep
sed
awk
プレーンテキストエディタ
ed
vi(ex)
emacs
プログラミング言語
Java
JavaScript
Perl
PHP
Python
Ruby
Tcl

正規表現は、より大きなテキストセットからサブセットを見つけたり、分離したりする小さなコンピュータプログラムと考えることができます。 通常のコンピュータプログラムがそれを実行するためにコンピュータを必要とするのと同じように、正規表現はそれを解釈し、意味を与えるためのソフトウェア・アプリケーションを必要とします。

しばしば混同されるのですが、シェルなどのワイルドカードとして知られる glob とは異なります。

文法編集

ここでは特定のプログラミング言語やソフトウェアによらない基本的な正規表現の文法を解説し、個々の文法や具体的なパターンマッチの方法についてはそれぞれの言語やソフトウェアのページに譲ります。

正規表現のメタ文字の一覧
メタ文字 解説
. 任意の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" にマッチする。
^ 文頭にマッチする。例えば ^WikipediaWikipediaWikipedia日本語版にマッチするが、日本語版Wikipediaにはマッチしない。
$ 文頭にマッチする。例えば Wikipedia$Wikipedia日本語版Wikipediaにマッチするが、Wikipedia日本語版にはマッチしない。

関連書籍編集

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