お題目の通り、正規表現とワイルドカード違いを教えてください。
正規表現が、上手く説明できないので微視的になりますが曖昧な語句、例えば、0文字から1文字を意味する「?」や、abcのうちのどれかを意味する[abc]などを利用することで文字列の揺れを吸収し、検索を行って人を助けるもの、ワイルドカードが特殊な意味を持つ文字列の集まりと認識しております。
ネット上で「正規表現 ワイルドカード 違い」と調べるとなんでも世の中の正規表現やワイルドカードの説明は、間違いだらけだ、と記述しているサイトを見つけました。独習phpという書籍には、ワイルドカートを高度化したものが正規表現であると書いてあります。
ワイルドカードと正規表現の違いは、いったい何なのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
ワイルドカード
ワイルドカードは扱う言語によって文法が異なりますが、共通するのは任意の文字を表すメタキャラクタである事です。
参考までに次の文法である事が多いですね。
?
… 任意の一文字 (正規表現でいうところの[\s\S]
)*
… 任意の文字の0回以上の繰り返し (正規表現でいうところの[\s\S]*
)
正規表現
正規表現は「任意の文字」以外にも特別な意味を持つメタキャラクタが多数あります。
繰り返し条件も +
(1回以上の繰り返し)、*
(0回以上の繰り返し)、{3}
(3回の繰り返し、のように指定方法が多彩です。
ワイルドカードと比較して柔軟に文字列処理できるのが正規表現の特徴です。
Re: aaaaaaaa さん
投稿2016/05/24 12:16
編集2016/05/24 12:40総合スコア18189
0
「ワイルドカード」は、元々はトランプのジョーカーのように「何にでもなるもの」という意味です。
従って、語義通りだと、正規表現の.
もワイルドカードになります。
ただ、プログラミングの世界だと、「シェルのファイル名展開(glob)の記法」と同じ意味で使われていることも多いようです。
シェルがファイル名を展開する際に解釈するワイルドカードは、?
が任意の1文字、*
が任意の0文字以上、[a-z]
が文字クラスなど、正規表現と同じ部分も有り異なる部分もあります。
誤解を避けるためには「ワイルドカード」という言葉を一切使わないというのが良いかと思います。
追記:
説明が足りず、誤解を招く事もあるようなので、整理して書き直します。
#ワイルドカードとは
由来:
トランプのいくつかのゲームでのジョーカーのようにどのカードの代わりにもなる機能
(ゲームによっては、ジョーカーがそういう機能を持っていないし、ジョーカー以外がワイルドカード機能を持つこともある)
由来に沿った意味:
正規表現の.
、シェルのパス名展開の*
?
、SQLのLIKEの%
_
のように(一部例外はあるが)どの文字にもマッチする記号のこと。
よく使われいている意味:
シェルのパス名展開の*
?
の意味を含んだような、パターンマッチングのための記法。
シェル以外でも、*
?
の意味が共通であれば、その記法がワイルドカードと呼ばれることがある。
Bashのパス名展開だとこのほかに[ ]
や{ }
を使った指定方法もあるし、その記法はパス名展開以外の場所たとえばcase文や、変数展開時の修飾などでも使われている。
投稿2016/05/24 12:29
編集2016/05/25 06:39総合スコア85778
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/24 22:24
2016/05/25 02:50
2016/05/25 05:46
2016/05/25 06:10
2016/05/25 14:39
2016/06/11 18:58
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/25 04:31