この質問はJava 7/8に固有です。数量を使用していますルックバックヒント式の中で量子を使用できますか?
Aかなり複雑な正規表現は、このいずれかのように戻り読み言明内で禁止されています:
(?<=(a|b*)*)bc
それはのようなメッセージが表示され、実行時例外が発生して:私は推測してい
look-behind group does not have obvious maximum length error
*
と+
のような量指定子は「一般的に」許可されていないためです。
ただし、次の作業を行います。
(?<=a*)bc
なぜこれがそうですか?
SO上でこの問題について同様の記事があります。その他の言語については
はいくつかの記事では、Javaに固有のものですが、コンクリートを提供していないようです回答または参考文献(thisなど)ほとんどの場合、これらの量指定子は単純に使用できないと答えています。また、regular-expressionsのウェブサイトも同じです。
This post状態Javaには実装上のバグがあります。
しかし、私はその上に示された例では、後読みの内部ゼロまたは多数の数量詞*
を使用するJava 7/8に有効です。
参考文献や説明が参考になります。
(注:これはJLSではなくライブラリのドキュメントで指定されています) –
[ライブラリのドキュメント](http://docs.oracle.com/javase/8/docs/api/java/util/regex /Pattern.html)は実際にそれを指定しません。特定の動作を記述したO'Reillyの本を紹介しています。 – ajb
ありがとうございます。私は訂正をしました。 –