- ベストアンサー
正規表現とワイルドカードについて
- 正規表現とワイルドカードの違いを教えてください。
- 正規表現はコマンドの引数やスクリプトなどで使われ、様々な表現が可能です。ワイルドカードはコマンドラインで使われ、複雑な指定が難しいです。
- 正規表現とワイルドカードについての参考書やホームページを教えてください。また、シェルスクリプトの記述についても勉強中です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
正規表現(Regular Expressions, RE)は使いこなすと便利ですよね。 >「ワイルドカード」-コマンドラインで使うもの。エスケープするときは「’’」で囲む。 >複雑な指定は難しい。 実際にはシェルスクリプトでも使えますが、ワイルドカードの展開はシェルの仕事だから Cプログラムでは処理する必要はないし、だいたいそういう認識でいいのでは。 「''」で囲むというのはワイルドカード自身の属性というよりは コマンドラインでシェルが展開してくれるのを防ぐためですね。 「ワイルドカード」とはもともとトランプ用語で、どのカードの代わりにも使える オールマイティなカードを指したもので、これから転じて file000.jpg, file001.jpg,...file999.jpg というファイルがあるとき 「file*.jpg」とか「file???.jpg」「file[0-9][0-9][0-9].jpg」などという指定ができるのが シェルのワイルドカードで、ここまではご存じと思います。 Solaris のシェルというと Bourne Shell(sh)でしたっけ。Linux の bash など モダンなシェルよりは機能的に劣ります。 sh ではどのみち複雑な指定はできないのでざっと流しても構いません。 また、bash のような高機能シェルだったら help コマンドでオンラインヘルプが見られます。 シェルのワイルドカード(グロビング)については、アスキーの 「たのしい UNIX」「続・たのしい UNIX」(坂本文)が参考になるでしょう。 また、やはりアスキーの「UNIX プログラミング環境」(Kernighan&Pike著、石田晴久訳)も 古き良き UNIX 文化を伝える不朽の名著ですから、かえって Solaris の sh では 素直に使えるかもしれません。シェルスクリプトから高度なCプログラミングの勉強にも もってこいです。 ここでも興味深い質問がありましたので、ぜひご覧ください。 No.483118 質問:シェルスクリプトに手をだしてみたいのですが。。。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=483118 >「正規表現」-コマンドの引数や、スクリプトなどで使われるもの。 >エスケープするときは「¥」をつける。基本的に’’」で囲むもの。様々な表現が可能。 よく勉強してらっしゃいますね。正規表現はワイルドカードよりずっと柔軟な表現が可能で その気になれば分厚い本が一冊書けてしまいます。 事実、オライリーから「詳説 正規表現」(Jeffery E. F. Friedl 著、歌代和正他訳) という大部が出ています。 http://www.amazon.co.jp/exec/obidos/ASIN/4900900451/249-6496763-3526725 オライリー・ジャパンのサイトになかったとこを見ると、第2版が近々出るのかな? また正規表現の文法にはさまざまな方言があって、grep, sed のような単純なもの (BRE, Basic RE)や egrep, awk のように多少拡張されたもの(ERE, Extended RE) などありますが、現在最有力なのが Perl5 のものです。 Python や Ruby といった後輩スクリプト言語や Java 1.4 の正規表現も Perl5 互換を目標としています。 正規表現は文字列処理の「肝」ですので(これを軽視しているMSソフトが信じられない!) 解説しているサイトはたくさんあります。 参考 URL の正規表現リンク集からいくらでもたどれますが、 2番目の「Riue ちゃんの正規表現講座」が初心者向けでしょうか。 おさらいには以下の「正規表現メモ」がいいかと思います。 http://www.kt.rim.or.jp/~kbk/regex/regex.html また、「Perl 正規表現雑技」をご覧になれば、素因数分解までやってのける 正規表現のパワーに瞠目されること間違いありません。 http://www.din.or.jp/~ohzaki/regex.htm このように、正規表現が最も威力を発揮するのは Perl などの スクリプト言語ですので、Perl 関連のサイトやドキュメントをご覧になれば いっそう勉強が進むと思います。長くなってしまいましたが、 美味しいとこだけつまみ食いして、できるところから始めればいいのです。 健闘を祈ります(^^
お礼
ご返答ありがとうございます。 頭の中がすっきりしたような気がします。 毎日、基本的な事しかしていないのですが、それでもこの2つを使うと、いろいろ便利になります。 >正規表現は文字列処理の「肝」ですので スクリプトなどを勉強すると、まさにおっしゃる通りだと実感します。使っている人には当たり前なのでしょうが、初心者の私には、コマンドを使った様々な機能と共に、正規表現を勉強するつもりです。 >美味しいとこだけつまみ食いして、できるところから始めればいいのです。 最初なのでなんでも有りの気持ちでやっていましたが、シンプルかつ実用的なご助言、ありがとうございます。正規表現なども言葉は悪いですが「いかに楽をするか」「短い表現でシンプルに表すか」みたいなところを感じています。 ありがとうございました。