ワイルドカードと正規表現の違い

ワイルドカードと正規表現の違いについてまとめました。

ワイルドカードと正規表現

「ワイルドカード」「正規表現」とは、両方とも「文字列の集合を一つの文字列で表現する方法」です。
複雑な文字列検索を効率的に行うことができます。

「ワイルドカード」「正規表現」を同じ物だと勘違いされるケースがありますが、実は別々の物となります。
違いは次の通りです。

種類 概要
ワイルドカード 「*」「?」の2種類の記号で、文字列の集合を表現
正規表現 ワイルドカードの「*」「?」に加えて、さらに他の記号を使ってより文字列の集合を表現

一言でいうと、正規表現はワイルドカードの上位互換となります。

ワイルドカード

ワイルドカードでは、「*」「?」の2種類の記号で、文字列の集合を表現します。

パターン 意味 記述例 該当例
* 任意の長さの文字 わ* 「わい」「わたし」「わかやま」など
? 任意の1文字 わ? 「わい」「わか」など

【注意】「*」の後にある文字列
※UNIX系・・・条件として扱われる
※Windows系・・・条件として扱われない

正規表現

ワイルドカードの「*」「?」に加えて、さらに他の記号を使ってより複雑な条件を指定できます。

パターン式 内容
[ ] [ ] 内に指定した文字のどれかと一致
[^ ] [ ] 内に指定した文字でない場合に一致する
^ 行頭と一致
$ 行末と一致
. 任意の1文字と一致
( ) 正規表現をグループにまとめる
| 前後にある正規表現のいずれかと一致
+ 直前の正規表現の1回以上の繰り返しに一致
? 直前の正規表現に0回 or 1回一致
{m,n} 直前の正規表現のm~n回の繰り返しに一致
+? 直前の正規表現の1回以上の繰り返しに一致
*? 直前の正規表現の0回以上の繰り返しに一致
?? 直前の正規表現に0回もしくは1回一致
* 直前の正規表現の0回以上の繰り返しに一致
{m,n}? 直前の正規表現のm~n回の繰り返しに一致
\ メタ文字を打ち消す
\A 文字列の先頭と一致
\b 単語境界と一致 (\w と \W の間の空文字列と一致)
\B \B 以外と一致
\d 数字と一致 ( [0-9] と同じ )
\D \d以外と一致
\s 空白文字と一致
\S \s 以外と一致
\w 英数字とアンダースコア_に一致
\W \w 以外と一致
\Z 文字列の末尾と一致

※参考:【正規表現とは】一覧表と例題

関連ページ、その他
関連 【情報処理入門】基礎用語・原理・資格まとめ
関連記事