ホームページ  >  記事  >  Java  >  Java 正規表現一致パターン (貪欲、消極的、所有欲)

Java 正規表現一致パターン (貪欲、消極的、所有欲)

高洛峰
高洛峰オリジナル
2017-01-22 14:38:261248ブラウズ

貪欲さ: 最大一致

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 サイトにご注意ください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。