貪欲さ: 最大一致
X?、X*、X+、X{n,} が最大一致です。たとえば、「618b16d23a3ddab818f44e3be2c27e38」を使用して「aa34de1251f0d9fe1e645927f19a896e8aava fd273fcf5bcad3dfdad3c41bd81ad3e5abb」と一致させる場合、おそらく期待される結果は「a34de1251f0d9fe1e645927f19a896e8」と一致します。結果は「a34de1251f0d9fe1e645927f19a896e8aava fd273fcf5bcad3dfdad3c41bd81ad3e5」に一致します。
Greediness モードでは、コンテンツ全体が一致するまで、可能な限り広い範囲で一致しようとします。このとき、マッチングは成功できません。マッチングが成功するまで、小さなマッチング範囲に戻り始めます
String test = "a<tr>aava </tr>abb "; String reg = "<.+>"; System.out.println(test.replaceAll(reg, "###"));
出力: a###abb
Reluctant (怠惰) (Reluctant): 最小一致
X??, {n, m}? および
String test = "a<tr>aava </tr>abb "; String reg = "<.+?>"; System.out.println(test.replaceAll(reg, "###"));出力: a###aava ###abb Greediness とは異なり、Reluctant モードではコンテンツが 2 回一致します Possessive (所有的): 完全一致
X?+, X*+, X++, X {n , }+ は完全一致です。Greediness パターンの後に + を追加すると、完全一致になります。
Possessive パターンは、Greediness と一定の類似性を持っています。つまり、コンテンツの最後まで最大範囲の一致を試みます。内容は異なりますが、Greediness とは異なります。正確な一致は、より狭い範囲の一致を試行することはなくなりました
String test = "a<tr>aava </tr>abb "; String reg = "<.++>"; String test2 = "<tr>"; String reg2 = "<tr>"; System.out.println(test.replaceAll(reg, "###")); System.out.println(test2.replaceAll(reg2, "###"));出力: aa34de1251f0d9fe1e645927f19a896e8aava fd273fcf5bcad3dfdad3c41bd81ad3e5abbその他の Java 正規表現一致パターン (貪欲、消極的、独占欲) 関連記事については、PHP 中国語 Web サイトにご注意ください