JAVA正则表达式精通之路2
来源:互联网 发布:人工智能外文参考文献 编辑:程序博客网 时间:2024/05/17 14:28
Greedy 数量词 X?X,一次或一次也没有X*X,零次或多次X+X,一次或多次X{n}X,恰好 n 次X{n,}X,至少 n 次X{n,m}X,至少 n 次,但是不超过 m 次 Reluctant 数量词 X??X,一次或一次也没有X*?X,零次或多次X+?X,一次或多次X{n}?X,恰好 n 次X{n,}?X,至少 n 次X{n,m}?X,至少 n 次,但是不超过 m 次 Possessive 数量词 X?+X,一次或一次也没有X*+X,零次或多次X++X,一次或多次X{n}+X,恰好 n 次X{n,}+X,至少 n 次X{n,m}+X,至少 n 次,但是不超过 m 次
Greedy:贪婪的
Pattern p = Pattern.compile("\\d{3,5}");
String s = "123753re";
Matcher m = p.matcher(s);
System.out.println(m.find());
System.out.println(m.group());
返回12375
Reluctant:勉强的
Pattern p = Pattern.compile("\\d{3,5}?");
String s = "123753re";
Matcher m = p.matcher(s);
System.out.println(m.find());
System.out.println(m.group());
返回123
Possessive:占有的
Pattern p = Pattern.compile("\\d{3,5}+");
String s = "123753re";
Matcher m = p.matcher(s);
System.out.println(m.find());
System.out.println(m.group());
返回的是12375,从结果可以看出来占用模式也是贪婪的,按照多的来,下文资料显示,占用模式是一种提供运行效率的做法
数量表示符
"数量表示符(quantifier)"的作用是定义模式应该匹配多少个字符。
- Greedy(贪婪的): 除非另有表示,否则数量表示符都是greedy的。Greedy的表达式会一直匹配下去,直到匹配不下去为止。(如果发现表达式匹配的结果与预期的不符),很有可能是因为它是greedy的,因此会一直匹配下去。
- Reluctant(勉强的): 用问号表示,它会匹配最少的字符。也称为lazy, minimal matching, non-greedy, 或ungreedy。
- Possessive(占有的): 目前只有Java支持。它更加先进,所以你可能还不太会用。用正则表达式匹配字符串的时候会产生很多中间状态,(一般的匹配引擎会保存这种中间状态,)这样匹配失败的时候就能原路返回了。占有型的表达式不保存这种中间状态,因此也就不会回头重来了。它能防止正则表达式的失控,同时也能提高运行的效率。
0 0
- JAVA正则表达式精通之路2
- Java正则表达式之从入门到精通
- 精通正则表达式(2)
- 精通正则表达式:2 3
- 《精通正则表达式》笔记 之 基础知识
- 《精通正则表达式》笔记 之 环视
- 精通正则表达式之元字符
- Java程序员:一刻钟精通正则表达式
- java程序员:一刻钟精通正则表达式
- Java程序员:一刻钟精通正则表达式
- Java程序员:一刻钟精通正则表达式
- Java程序员:一刻钟精通正则表达式
- Java程序员:一刻钟精通正则表达式
- Java程序员:一刻钟精通正则表达式
- Java程序员:一刻钟精通正则表达式
- Java程序员:一刻钟精通正则表达式
- Java之正则表达式
- Java之正则表达式
- POJ2385 Apple Catching
- JS获得一个对象的所有属性和方法
- 随机快排
- usaco-3.1-PROB Shaping Regions-漂浮法
- 企业开发中js,Jquery,Ajax和json格式的一个例子
- JAVA正则表达式精通之路2
- hibernate配置数据库连接池的三种方法
- 论微软office的鸡肋功能
- ASP定时组件
- 灵活使用XMultipleSeriesRenderer设置自定义的轴标签
- 闰年判别
- Ad Rotator组件使用例子
- 如何使用KeyChain保存和获取UDID
- Dicom打印工作站