好奇心から、ランダムではあるが有効な正規表現で完全に作成された文字列を単一の正規表現で解析することは可能ですか?
与えられた正規表現の文字列:
<[^>]*>\xA9
次のように解析します。
<[^>]*>
\xA9
1 つ目は html に一致し、2 つ目は著作権記号に一致します。
編集: SOで同様の質問があり、それが可能であると主張しているのを見つけました。ここでは、JavaScript ECMA-262 のみの正規表現について言及しています。
好奇心から、ランダムではあるが有効な正規表現で完全に作成された文字列を単一の正規表現で解析することは可能ですか?
与えられた正規表現の文字列:
<[^>]*>\xA9
次のように解析します。
<[^>]*>
\xA9
1 つ目は html に一致し、2 つ目は著作権記号に一致します。
編集: SOで同様の質問があり、それが可能であると主張しているのを見つけました。ここでは、JavaScript ECMA-262 のみの正規表現について言及しています。
いいえ、それはできません。正規表現言語では、括弧のバランスを取る必要があるキャプチャ グループと非キャプチャ グループ、ルックアラウンドなどを表す括弧付きの式を使用できます。与えられた文字列で括弧のバランスが取れているかどうかを検証する正規表現を書くことは、理論上も不可能です。それを行う能力がなければ、一方の正規表現がどこで終わり、もう一方の正規表現がどこで始まるかわかりません。
一般に、正規表現の文法は比較的複雑です。それがどれほど複雑かを理解するには、Java のPattern
クラスのソースにあるパーサーを見てください。