String.replaceAll() の二重置換異常について
なぜ次のコードが使用されるのかという疑問が生じます:
<code class="java">System.out.println("test".replaceAll(".*", "a"));</code>
結果は、予期される「a」ではなく「aa」になります。この異常は、「.*$」を使用する場合にも発生します。
原因:
この異常は、「.*」正規表現の性質から発生します。空の文字列を含む任意の文字シーケンスと一致します。したがって:
解決策:
この問題を回避するには、次の使用を検討してください。
正規表現の動作:
一方、 .* は空の文字列と一致します。 、2 回以上一致することはできません。これは次の理由によるものです。
以上が`String.replaceAll('.*', 'a')` の結果が 'a' ではなく 'aa' になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。