Java正则之贪婪匹配、惰性匹配
贪婪量词: 先看整个字符串是不是一个匹配。如果没有发现匹配,它去掉最后字符串中的最后一个字符,并再次尝试。如果还是没有发现匹配,那么 再次去掉最后一个字符串,这个过程会一直重复直到发现一个匹配或者字符串不剩任何字符。简单量词都是贪婪量词。 惰性量词: 先看字符串中的第一个字母是不是一个匹配,如果单独着一个字符还不够,就读入下一个字符,组成两个字符的字符串。如果还没有发现匹配,惰性量词继续从字符串中添加字符直到发现一个匹配或者整个字符串都检查过也没有匹配。惰性量词和贪婪量词的工作方式恰好相反。 支配量词: 只尝试匹配整个字符串。如果整个字符串不能产生匹配,不做进一步尝试。 贪婪量词 惰性量词 支配量词 描述 1、贪婪量词 复制代码 代码如下: var regexp = /.*bbb/g; var a = str.match(regexp); alert(a.length); //output:1 alert(a[0]); //output:abbbaabbbaaabbb 贪婪量词的工作过程可以这样表示: 2、惰性量词 复制代码 代码如下: var regexp = /.*?bbb/g; var a = str.match(regexp); alert(a.length); //output:3 alert(a[0]); //output:abbb alert(a[1]); //output:aabbb alert(a[2]); //output:aaabbb 惰性量词的工作过程可以这样表示: 复制代码 代码如下: String string = "abbbaabbbaaabbb1234"; Pattern p = Pattern.compile(".*+bbb"); Matcher m = p.matcher(string); System.out.println(m.find()); //output:false 因为支配量词采用一刀切的匹配方式,如: 以上所述就是本文的全部内容了,希望大家能够喜欢,能够对大家熟练掌握java正则匹配有所帮助。 请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – HttpServletRequest#getRemoteAddr()返回NULL
- spring-boot读取props和yml配置文件的方法
- JAVA 数据结构链表操作循环链表
- 【异常】Phoenix异常:java.lang.ArithmeticException: Roun
- Java编程实现打地鼠文字游戏实例代码
- java – 使用ScheduledExecutorService的多个任务
- java按照关键字指定的key删除redis(支持模糊删除)
- Java 线程死锁的问题解决办法
- java – 强制实用程序类应该是final和private构造函数吗?
- 为JVM指定Java.Security文件的Java参数