6

正規表現だけを使用して、特定の文字列が有効な正規表現であるかどうかを検出することは可能ですか?

有効な正規表現である場合とそうでない場合があるいくつかの文字列があるとします。有効な正規表現に対応する文字列に正規表現を一致させたいと思います。それは可能ですか?それとも、これを検出するために高レベルの文法 (つまり、文脈自由言語) を使用する必要がありますか? Perl 正規表現のような正規表現の拡張バージョンを使用している場合、影響はありますか?

それが可能な場合、正規表現に一致する正規表現は何ですか?

4

3 に答える 3

8

いいえ、できません。これは、有効な正規表現にはグループ化が含まれるため、バランスのとれた括弧が必要になるためです。

バランスの取れた区切り文字は、正規表現では照合できません。代わりに、文脈自由文法と一致させる必要があります。(その記事の最初の例は、バランスの取れた括弧を扱っています。)

于 2010-05-25T17:22:18.397 に答える
1

ここで優れた記事を参照してください:

正規表現の正規表現?

答えは、正規表現は通常の文法ではなく、文脈自由文法を使用して記述されているということです。

于 2010-05-25T17:28:58.107 に答える
0

あなたの質問が「すべての有効な正規表現に一致する」であった場合、答えは (おそらく驚くべきことに) 「はい」です。正規表現.*はすべての有効な (および無効な) 正規表現に一致しますが、有効な正規表現を見ているかどうかを判断するにはほとんど役に立ちません。

ただし、質問は「有効な正規表現のみに一致する」であるため、答えは (DVK と Platinum Azure が「いいえ」と言ったように) です。

于 2010-05-28T11:01:17.597 に答える