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

高洛峰
リリース: 2017-01-16 11:16:37
オリジナル
1441 人が閲覧しました

貪欲さ: 最大一致

X?、X*、X+、X{n,} が最大一致です。たとえば、「<.+>」を使用して「aaava abb」と一致させる場合、おそらく期待される結果は「」と一致します。結果は「aava 」に一致します。

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, "###"));
ログイン後にコピー

出力: aaava abb

その他の Java 正規表現一致パターン (貪欲、消極的、独占欲) 関連記事については、PHP 中国語 Web サイトにご注意ください

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート