`
xie378508297
  • 浏览: 911 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

java正则表达式Greedy、Reluctant、Possessive的深入理解

阅读更多
//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 正则表达式

    Java正则表达式是Java语言中用于处理字符串的强大工具,它允许程序员进行复杂的字符串匹配、查找和替换操作。正则表达式(Regular Expression)是一种模式匹配语言,通过特定的语法来描述字符串的模式,用于在文本中...

    java正则表达式.pdf

    接下来,我们将深入探讨几个关键的概念,这些概念对于理解和使用Java正则表达式至关重要。 ##### 1. Line Terminator (行终止符) 行终止符定义了哪些字符可以被视为一行的结束。Java中支持多种行终止符: - `\n` -...

    正则表达式的构造摘要

    本文将深入解析正则表达式的构造摘要,帮助读者理解和掌握正则表达式的各种元素和语法。 ### 一、转义序列 正则表达式中的转义序列用于表示特殊字符,如: - `\0n`、`\0nn`、`\0mnn`:分别代表带有八进制值0、0到7...

    通过Java正则表达式去掉SQL代码中回车换行和多余空格

    在编写代码工具或进行代码清理时,处理SQL语句的格式化问题是一个常见的需求。...通过上述的知识点,我们可以更加深入地理解和掌握如何使用Java正则表达式来处理SQL语句的格式化问题,从而提升代码质量与维护效率。

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    * Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The ...

    正则表达式

    学习正则表达式时,建议参考JDK文档中的`java.util.regex.Pattern`类文档,这将帮助你更深入地理解和掌握正则表达式的构造方法和技术细节。此外,网络上还有许多教程和在线练习资源可以帮助你提升正则表达式的使用...

Global site tag (gtag.js) - Google Analytics