By default,pattern matching is greedy,which means that the matcher returns the longest match possible. For example,applying the patternA.*ctoAbcAbcAmatchesAbcAbcrather than the shorterAbc. To do nongreedy matching,a question mark must be added to the quantifier. For example,the patternA.*?cwill find the shortest match possible.
// Greedy quantifiers
String match = find("A.*c","AbcAbc"); // AbcAbc
match = find("A.+","AbcAbc"); // AbcAbc
// Nongreedy quantifiers
match = find("A.*?c","AbcAbc"); // Abc
match = find("A.+?","AbcAbc"); // Abc
// Returns the first substring in input that matches the pattern.
// Returns null if no match found.
public static String find(String patternStr,CharSequence input) {
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
return matcher.group();
}
return null;
}
注:本文转载自:http://www.zsm8.com/book/java_Exa/java.util.regex/Greedy.html
总结
以上是编程之家为你收集整理的正则表达式的贪婪匹配和非贪婪匹配全部内容,希望文章能够帮你解决正则表达式的贪婪匹配和非贪婪匹配所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250