正規表現とワイルドカードは違います

「・・・がわかっていない人は、情報関係の本なんて書くべきではない」なんてことを言うと自分に跳ね返ってきそうで怖いのですが、正規表現とワイルドカードの違いがわかっていない人は、お願いですから情報関係の教科書は書かないでください

計算機概論の講義のネタを集めているときに、「正規表現とワイルドカードをごっちゃにする」というとんでもない間違いが世に蔓延っているのを知りました。影響力の小さいブログとかなら別にいいのですが、情報処理技術者試験の教科書や、IT用語辞典が間違っているのはまずいでしょう

たとえば、手元にあった『ソフトウェア開発技術者完全教本』には、次のような記述がありました

正規表現は、特定の文字列ではなく文字列の一部を一般化して表現するための手法。プログラム言語理論の分野において、字句(変数名や予約語、その他の識別子)を一般化して定義するために考案された表現である。

たとえば、文字列検索において、"*"を任意の文字列(空文字も含む)、"?"を任意の1文字として指定できるとすると、検索文字列に"abc*"と指定すると、次のような文字列が検索の対象となる。

abc, abcd, abcded, abcdefghijklmnなど

などが検索の対象となる。また、"a?c"と指定した場合は、次のような文字列が検索の対象となる。

abc, aac, axcなど

最初の説明は変ですし、後の例は正規表現ではなくワイルドカードのものです。開いた口がふさがらないというやつです

もう1冊、『情報処理技術者試験学習書 情報処理技術者』には次のような記述がありました

文字列に対して、特定の文字("$"、"*"など)を組み合わせて表現することを正規表現という。この特定の文字を、メタキャラクタという。メタキャラクタは特別な意味を持っている。UnixやWindowsなどでファイルを検索するとき、"*.jpg"と指定すると、拡張子が"jpg"であるファイルが検索される。このときの"*"がメタキャラクタである。

メタメタですね。ちょっとした誤解というわけではなさそうです

辞典も信用なりません。SL900Xに収録されている情報処理技術者用語辞典によれば、

字句をパターンの集合で表す式で定義する表現方式。(中略)「*」はワイルドカードとして利用される。

されません。正規表現とワイルドカードは違います。なんか、やばいことになってませんか?

ASCIIのデジタル用語辞典(Glossary Help)には、先の『ソフトウェア開発技術者完全教本』とほとんど同じ説明が載ってますね。やれやれ(著作権とかは大丈夫なんでしょうか。ウソを護ってもしょうがないかもしれませんが)

同じくASCIIのデジタル用語辞典(PC EXPLORER)によれば、

文字列の一部をパターン化して記述する方法。正規表現を用いた検索では、特定の単語そのものだけではなく条件に一致する複数の単語を検索できる。UNIXなどで一般的な文字列検索プログラム「grep」では、キーワード中の「*」を任意の文字列、「?」を任意の1文字として検索できる。

できません。それはワイルドカードです。

教科書も辞典もダメだとすると、学生は何に頼ったらいいんでしょう

学問の場では批判的に見られることが多いようですが、Wikipediaの説明はけっこういいと思いますよ。こんなところに誠実さを感じます(この注意は私の本にも書きましたが)

拡張された正規表現には正規言語ではない文字列も表せるものも多く、ゆえに正規表現という名前は実態に即していない面もあるが、伝統的に正規表現と呼ばれ続けている。

詳説 正規表現 第3版正規表現の解説書は、Friedl『詳説 正規表現』(第3版)が定番です(最近、新しい翻訳が出ました)

言語理論の教科書は、Hopcroft, Ullman, Motwani『オートマトン言語理論 計算論』が定番ですが、Sipser『計算理論の基礎』(原著第2版)という新しい教科書もお薦めです(学生だったときに、これの第1版を読みました。1冊のほうが扱いやすくていいのですが)

計算理論の基礎 [原著第2版] 1.オートマトンと言語 計算理論の基礎 [原著第2版] 2.計算可能性の理論 計算理論の基礎 [原著第2版] 3.複雑さの理論

ちゃんと勉強したい学生の皆さんは、定評のある教科書を選ぶと良いでしょう

トラックバック(0)

このブログ記事を参照しているブログ一覧: 正規表現とワイルドカードは違います

このブログ記事に対するトラックバックURL: http://www.unfindable.net/~yabuki/mt/mt-tb.cgi/998

コメント(2)

矢吹さんの計算機概論の講義受けてみたかったです。
こうやって言われてみると、混同して理解しているものが多そうですね。

Shioざわさん

私の講義は、「一部の優秀な学生を満足させる」ことを目的にはしていないので、
そんなに面白くはないかもしれませんよ(間違い探しに来ると楽しめるかも)

コメントする


画像の中に見える文字を入力してください。

portrait

 

Translation

著書

schedule

 

2010年1月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

関連商品(Amazon)

関連サイト(Google)

アーカイブ

twitter

  •