/[abcd]/
、、、/(ab|cd)/
およびを持つことができます/[^wxyz]/
。なぜだめですか/(^wx|yz)/
どうやら、次のように、機能を他の機能と一緒にまとめるだけで、まったく同じ効果を実現できるようです/(?!wx|yz)../
。
では、この機能をネイティブでサポートしないのはなぜでしょうか? 根本的な理由はありますか?
/[abcd]/
、、、/(ab|cd)/
およびを持つことができます/[^wxyz]/
。なぜだめですか/(^wx|yz)/
どうやら、次のように、機能を他の機能と一緒にまとめるだけで、まったく同じ効果を実現できるようです/(?!wx|yz)../
。
では、この機能をネイティブでサポートしないのはなぜでしょうか? 根本的な理由はありますか?
それで、それが(^wx|yz)
意味することを想像してみてください - あなたが明らかに意図しているように - 「wx
でもyz
」でもない2文字のシーケンス。どういう(^vwx|yz)
意味ですか?vwx
それは「どちらでもない2 文字または 3 文字のシーケンス」という意味でしょうyz
か? それは、" ではない、またはで始まらない3 文字のシーケンス、または"である 2 文字のシーケンスのいずれかを意味しますか?vwx
yz
yz
文字クラス表記の威力[...]
— 範囲a-z
をサポートできるもの、否定をサポートできるものなど— は、常に単一の文字に一致することです。その制限を取り除くとすぐに、これらが何を意味するのかが明確ではなくなります。
の振る舞いはどうなると思います/(^wx|yz)/
か?私には、空の文字列があなたが提案している「否定された代替」を満たすように思えます。同じ数の文字に一致することを期待している場合、可変長の正規表現を使用する否定された代替はどうですか?
ここで私が理解しようとしているのは、否定された代替はあいまいすぎて実装できないということです。それを行う最も明白な方法は、とにかく幅がゼロのアサーションであるため、単に を使用できます(?!...)
。