//possessive 输出: 无,“b+“已经匹配了所有11个b,后面再加一个b,也就是12个b,此时就匹配不了了,这个是常人的理解
//即将后面一个b占有了(不具有回溯功能),串中因为没有12个b,所以没有输出
//Matcher matcher = Pattern.compile("b++b").matcher("aaabbbbbbbbbbbwac");//则可以正常匹配了。
//greedy 输出: bbbbbbbbbbb,“b+“已经匹配了所有11个b,后面再加一个b,也就是12个b,按常理来说是匹配不了了,
//但由于是贪婪式,它会将跟上的那个b扔掉(常说的回溯)去匹配前面的11个b,所以会输出11个b
//这种方式使用得最多,
//Matcher matcher = Pattern.compile("b+b").matcher("aaabbbbbbbbbbbwac");//则可以正常匹配了。
//reluctant 输出: bb, bb, bb, bb, bb,由于是懒惰式,最少匹配,“b+“最少匹配1个b,后面再加一个b,也就是2个b,
//两个两个的匹配,所以输出5组bb(第11个b匹配不了了),如果改为"b*?b",就会输出11组b
Matcher matcher = Pattern.compile("b??b").matcher("aaabbbbbbbbbbbwac");//则可以正常匹配了。
while(matcher.find()){
System.out.println(matcher.group());
}
上面的示例代码可以拷贝到main方法里面测一下,
思考,下面各自会输出什么结果:
String inptString = "Never give up! Never surrender!";
//greedy
//Pattern pattern = Pattern.compile("Never.*!");
//possessive
//Pattern pattern = Pattern.compile("Never.*+!");
//reluctant
//Pattern pattern = Pattern.compile("Never.*?!");
Matcher matcher = pattern.matcher(inptString);
分享到:
相关推荐
Java正则表达式是Java语言中用于处理字符串的强大工具,它允许程序员进行复杂的字符串匹配、查找和替换操作。正则表达式(Regular Expression)是一种模式匹配语言,通过特定的语法来描述字符串的模式,用于在文本中...
接下来,我们将深入探讨几个关键的概念,这些概念对于理解和使用Java正则表达式至关重要。 ##### 1. Line Terminator (行终止符) 行终止符定义了哪些字符可以被视为一行的结束。Java中支持多种行终止符: - `\n` -...
本文将深入解析正则表达式的构造摘要,帮助读者理解和掌握正则表达式的各种元素和语法。 ### 一、转义序列 正则表达式中的转义序列用于表示特殊字符,如: - `\0n`、`\0nn`、`\0mnn`:分别代表带有八进制值0、0到7...
在编写代码工具或进行代码清理时,处理SQL语句的格式化问题是一个常见的需求。...通过上述的知识点,我们可以更加深入地理解和掌握如何使用Java正则表达式来处理SQL语句的格式化问题,从而提升代码质量与维护效率。
* Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The ...
学习正则表达式时,建议参考JDK文档中的`java.util.regex.Pattern`类文档,这将帮助你更深入地理解和掌握正则表达式的构造方法和技术细节。此外,网络上还有许多教程和在线练习资源可以帮助你提升正则表达式的使用...