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

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

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

文法編集

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

POSIX基本正規表現のメタ文字の一覧編集

POSIX基本正規表現のメタ文字の一覧
メタ文字 解説
. 任意の1文字にマッチする。たとえば .ook という正規表現は "book" や "cook" などにマッチする。文脈によっては改行文字にマッチする場合もある。
* 直前の正規表現の0回以上の繰り返し。たとえば .* という正規表現は任意の1文字の0文字以上の繰り返しなので、すべての文字列にマッチする。
^ 行頭にマッチする。例えば ^WikipediaWikipediaWikipedia日本語版にマッチするが、日本語版Wikipediaにはマッチしない。
$ 行末にマッチする。例えば Wikipedia$Wikipedia日本語版Wikipediaにマッチするが、Wikipedia日本語版にはマッチしない。
[string] 文字列stringに含まれる任意の1文字にマッチする。たとえば [bcl]ook は "hook" と "sook" にはマッチしないが、"book" と "cook" と "look" にマッチする。
[^string] 文字列stringに含まれない任意の1文字にマッチする。たとえば [^bcl]ook は "hook" と "sook" にはマッチするが、"book" と "cook" と "look" にマッチしない。
[S-E] 文字Sから文字Eの間の任意の1文字にマッチする。たとえば、[A-C] は "A" "B" "C" にマッチする。
[^S-E] 文字Sから文字Eの間にない任意の1文字にマッチする。たとえば、[^A-C] は "A" "B" "C" 以外にマッチする。

POSIX拡張正規表現での追加メタ文字の一覧編集

POSIX拡張正規表現での追加メタ文字の一覧
メタ文字 解説
\ メタ文字の意味を打ち消し、メタ文字自身を表す。
? 直前の正規表現の0回または1回の繰り返し。直前の文字があってもなくてもマッチすることを意味する。たとえば s?he は "she" と "he" にマッチする。
+ 直前の文字の1文字以上の繰り返し。たとえば Goo+gle という正規表現は "Google" や "Gooogle"、"Goooooooogle" などにマッチするが、"Gogle" にはマッチしない。
regexp1|regexp2 regexp1またはregexp2にマッチする。
(regexp) 正規表現をグループ化する。括弧の中の文字列を1つのかたまりとして扱う。たとえば Wiki(books)? は "Wiki" または "Wikibooks" にマッチする。
regexp{m,n} regexpのm回以上n回以下の繰り返し。たとえば、we{2,4}k は "week" "weeek" "weeeek" にマッチする。

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

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

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

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

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

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

関連書籍編集

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