正規表現の定義は何ですか?

正規表現の定義は何ですか?

私は最近交流しました。ゴティ私の答えが何であるかについてのコメントの正規表現これ質問。私は次が正規表現であると主張します。

`[Rr]eading[Tt]est[Dd]ata`

Ghotiはこれがファイルの塊であると主張し、これに同意しません。これ全体的な状況Wikipediaページでは、次のように主張します(強調):

Globには、式の前の部分を複数回繰り返すことができるKleeneアスタリスク構文は含まれていません。したがって、これは、特定の制限されたアルファベットではるかに多くの正規言語セットを記述できる正規表現とは見なされません。

しかし、このステートメントは引用されておらず、これは特定のWikipediaの編集者の意見にすぎないことを示唆しています。

これシングルUNIX®仕様、バージョン2、デフォルトの正規表現(BRE)が単一文字である可能性があることを指摘しています。

一般文字は、BRE特殊文字にリストされているBRE特殊文字を除いて、サポートされている文字セット内のすべての文字と一致するBREです。

それでは、*nixの世界で正規表現の定義は何ですか?この定義はファイルグローブを除外しますか?

ベストアンサー1

lk-が言ったように、オプションは引数を正規表現ではなくグローバル変数として-name扱います。find

文字列がglob、正規表現、または通常の文字列として解釈されるかどうかは、解釈に使用される項目によって異なります。これは状況の問題です。例の文字列は[Rr]eading[Tt]est[Dd]ataさまざまな方法で評価できますが、それは何ですか?はいどのように使用するかによって異なります。グローブとして使えばグローブです。正規表現として使用してください。正規表現です。この場合問題はどこで発生しますか?、OPは文字列を正規表現として説明しました。だから私たちは彼がそれを正規表現として解釈する計画だと推測することができます。

単一文字の絶対値は正規表現です。文字列でもグローブでもかまいません。必要に応じてバイトまたはTinyintとして解釈できます。それはすべて状況によって異なります。

正規表現はさまざまな形式の仕様で提供されます。 BREとEREはよく文書化されています。 PCREは多くの機能を追加します。たとえば、多くの正規表現ソルバーは「すべてのEREと一部のPCRE」を実装しています。または、一部の機能を除いたEREを実行することもできます。公式仕様によると、多くのツールが正規表現をサポートすると主張していますが、これは不正確または不完全であることが判明しています。詳細を知ると、正規表現を評価するすべてのツールで利用可能な一連の機能にソリューションを適用できます。

したがって、グローバルを「除外」する定義を探しているなら、間違った観点から問題を見ているのです。 これは何ですか?に従ってどうやって使うの?

おすすめ記事