貪欲、消極的、独占欲の違い
例
上の表を見ると、これら 3 つの数量詞の意味は同じであることがわかります (X?、X など)。 ??、X?+ はすべて 1 回か 1 回ではないかを意味します) が、それらの間にはまだ微妙な違いがいくつかあります。最初に例を見てみましょう:
1.Greedy
Rreee -Result:form 0〜132.relecuctantrreee
result:0〜4の一致したフォーム4〜13 3.Possessivepublic static void testGreedy() { Pattern p = Pattern.compile(".*foo"); String strText = "xfooxxxxxxfoo"; Matcher m = p.matcher(strText); while (m.find()) { System.out.println("matched form " + m.start() + " to " + m.end()); } }
4 ~ 13 の形式に一致
比較プロセスは次のとおりです
所有量指定子は常にGreedy とは異なり、Possessive はロールバックすることはなく、ロールバックしたとしても全体的な一致が成功する可能性があります。 パターン文字列: .*foo検索文字列: xfooxxxxxxfoo結果://正常に一致しませんでした
比較手順は以下の通りです
参考記事: http://docs.oracle.com/ javase /tutorial/essential/regex/quant.htmlさらにいくつかの例を見てみましょう: パターン文字列: .+[0-9]検索文字列: abcd5aabb6結果: 0 ~ 10 の形式と一致しました
パターン文字列: .+?[0-9]
検索文字列: abcd5aabb6
結果: 0 ~ 4 の形式に一致しました
パターン文字列: .{1,9}+[0-9]
検索文字列: abcd5aabb6
結果: 0から10の形式に一致
パターン文字列: .{1,10}+[0-9]
検索文字列: abcd5aabb6
結果: 一致に失敗しました