web-dev-qa-db-ja.com

globスタイルのパターンと正規表現の違いは何ですか?

グロブスタイルのパターンのみがサポートされており、完全な正規表現のサポートがそこにない状況に遭遇しました(例:redisキー)。両者の違いを知りたいのですが。また、一部のソフトウェアが正規表現をまったくサポートしていないglobスタイルのパターンと比較して、正規表現マッチングアルゴリズムの実装が難しいのではないかと思います。

41
aamir

従来のglobワイルドカードは、非常に狭いメタ文字のセットをサポートしています— *は「何でも」、?は任意の1文字です。 Bourne Shellは、一連の選択肢の中から1文字の[a-z123]と、リストされているもの以外の[!x-z789]もサポートしています。

正規表現は明らかにより豊かで、繰り返しをサポートし、(EREでは)交互および特定の繰り返し数をサポートします。 Perlスタイルの正規表現は、形式をさらに拡張して、複数の本が書かれたところまで、さらに多くの本を書きます。

基本的な正規表現は、グロブワイルドカードよりもプログラムの作成がそれほど難しいことではありません。最近では、いずれにせよ、有能なプログラマが既存のライブラリにリンクします。

より単純なシステムの多くは、正規表現の学習の複雑さでユーザーに負担をかけたくありません。基本的なワイルドカードでさえ、フルタイムのコンピューターユーザーではない平均的な営業担当者に説明するのは難しいです。

26
tripleee

正規表現は、テキスト内のパターンマッチングのためのコマンド/関数で使用されます。たとえば、grepのパターンパラメータやプログラミング言語などです。

シェルでは、ワイルドカードを使用してファイル名とディレクトリ名を照合するためにグロビングが使用されます。グロビングの機能はシェルに依存します。たとえば、bashは次のようなワイルドカードをサポートしています。

詳細はこちら こちら

3
Aamol