戻る

正規表現

正規表現の使い方

 正規表現でどのように書けば何と一致するのかを簡単にまとめておきます.

 正規表現で特別な意味をもつ記号文字(メタ文字)は次の14個です. これらの文字を検索文字(列)として使いたいときは「\」でエスケープしてください.

. $ ^ { } [ ] ( ) | * + ? \

これらの記号を含まない文字列が正規表現に記述されていた場合は, その文字列そのままが調べる文字列の中に現れた時点で一致したことになります.

メタ文字の説明

[ ] (大括弧)
大括弧で囲まれた文字のうちいずれか一つが含まれていれば一致します.
[ab] と書いていれば a または b に一致します.
[a-z] と書いていれば a から z までのいずれか 1 文字に一致します.
- 自体をこの括弧の中に書く場合は括弧内の先頭か末尾に書いてください.

また,^ が大括弧の直後にあった場合否定の意味で使われます.
例えば,[^0-9] は数字を含まない文字列に一致します.

. (ピリオド)
任意の 1 文字と一致します.「文字がない」状態に対しては一致しません.

? (クエスチョンマーク)
直前の記述に一致する文字が 0 個または 1 個含まれていれば一致します.
例えば,</?p> は <p> と </p> に一致します

+ (プラス)
直前の記述に一致する文字が 1 つ以上連続しているとき一致します.
例えば,[ab]+ は a b ab aaa baba aaaaaaabbbb のいずれにも一致します.
1 文字以上の任意の文字列と一致させたい場合は .+ と書いてください.

* (アスタリスク)
直前の記述に一致する文字が 0 個以上連続しているときに一致します.
文字がない状態も含め任意の文字列と一致させたい場合は .* と書いてください.

| (名称不明,縦棒?)(一応「バーチカルバー」というらしい.日本語にすれば縦棒か(^^))
いずれかの文字列に一致することを調べるときに使います.
例えば This か That の両方に一致する必要があるときは This|That のように書きます.

( ) (丸括弧)
丸括弧は正規表現の区切り(グループ)を決めるのに使います.
例えば,Th(is|at) と書いても This と That の両方に一致します.
また,ここでは説明しませんが正規表現による置換を行う場合にも利用されます.

^ (ハット)
文字列の先頭という状態に一致します.例えば ^T と書いていれば先頭が T から始まる文字列に一致します.

$ (ドルマーク)
文字列の末尾という状態に一致します.例えば \.$ と書いていれば末尾が . の文字列に一致します.

{ } (中括弧)
文字の連続数を指定するときに使用します. 例えば a{3} と書いていれば aaa に一致します. また,コンマで数字を区切れば連続数の範囲を指定することもできます. つまり,[a-z]{3,5} と書いたとすると 3 文字から 5 文字のアルファベット小文字の組合せすべてに一致することになります.

参考:これらの正規表現を使用する場合,ソフトの実装によっては異なる結果となることがあります.実際,freebsd の grep と egrep で表示される結果が異なることがありました.皆さんも注意してください.


戻る