私は最近、この質問への回答に対するコメントで正規表現を構成するものについて、Ghotiと友好的な議論を交わしました。以下は正規表現であると主張しました:
`[Rr]eading[Tt]est[Dd]ata`
Ghotiは反対し、代わりにファイルグロブであると主張しました。ウィキペディアのグロブページは次のように主張しています(私の強調):
グローブには、式の前の部分の複数の
繰り返しを許可するクリーネ閉包の構文は含まれていません。 したがって、これらは正規表現とは見なされません。
正規表現は、任意の有限のアルファベットに対して
より多くの正規言語のセットを記述することができます。
ただし、この主張に対する引用はなく、これは特定のウィキペディア編集者の意見にすぎないことを示しています。
SingleUNIX®Specificationバージョン2には、基本正規表現(BRE)を1文字にすることもできると記載されています。
通常の文字は、それ自体に一致するBREです。
サポートされている文字セット内のすべての文字(BRE特殊文字にリストされているBRE特殊文字
を除く)。
では、* nixの世界での正規表現の定義は何ですか?その定義はファイルグロブを除外しますか?
承認された回答:
lk-が言ったように、 -name
find
のオプション 引数を正規表現ではなくグロブとして扱います。
文字列がグロブまたは正規表現として解釈されるか、単なる文字列として解釈されるかは、解釈を行うために使用されているものによって異なります。それは文脈の問題です。例の文字列、[Rr]eading[Tt]est[Dd]ata
さまざまな方法で評価できますが、 使用方法によって異なります。グロブとして使用してください。グロブです。正規表現として使用してください。正規表現です。これが発生した質問の場合、OPは文字列を正規表現として記述しました。したがって、彼はそれを正規表現として解釈することを計画していたと推測できます。
絶対に、単一の文字が正規表現になることもあります。文字列にすることも、グロブにすることもできます。必要に応じて、バイトまたはtinyintとして解釈できます。それはすべてコンテキストに依存します。
さまざまな形式の正規表現の仕様がいくつかあります。 BREとEREは十分に文書化されています。 PCREは、多数の機能を追加します。多くの正規表現インタープリターは、たとえば、「すべてのEREと一部のPCRE」を実装します。または、EREからいくつかの機能を差し引いたものを実行します。正式な仕様に従えば、多くのツールが正規表現のサポートを主張しますが、これは正しくないか不完全であることがわかります。詳細を知ることで、正規表現を評価しているツール内で利用可能な機能のコレクションにソリューションを適応させることができます。
関連: `ls`コマンドは最新のディレクトリの内容をリストしませんか?つまり…グロブを「除外する」定義を探しているのなら、これを間違った視点から見ていることになります。 それは何ですか 使用方法によって決まります 。