Java Pattern
クラスでは、+
などの量指定子だけの式、またはa++++
などの追加量子は使用できず、どちらの場合も(メタキャラクタがぶら下がっているため)例外がスローされます。しかし、Pattern
クラスでは、文字間の空白にマッチする間隔限定子を単独で使用することができます({1}
、{2,6}
)。インターバル内の数字はそれほど重要ではないので、{1}
と{99999}
は似ています(これは無限の「何もない」が同じスペースに収まる可能性があります)が、誤解を招く可能性があります。実際に正規表現は次のようになります。Javaパターンクラスの空の間隔量子
a{2}
a{2}{34}{9999,99999}
a{2}{45}
a{2}+{234}+{9,999999999}?
は有効なパターンであり、まったく同じです。したがって実際には役に立たない機能です。
私が知る限りRubyを除いてほとんどの正規表現フレーバでは、このような区間の使用は許可されていません。両方の型の数量子は等しく扱われ、有効なパターンを生成するためには定量化可能な要素の前に付ける必要があります。
Pattern
クラスでは、このような解決策の背後にはどのような理由がありますか? バグですか?エンジンの違い?異なる間隔で他の数値を扱うのはなぜですか?