《Java编程思想》学习笔记5——正则表达式量词匹配
2016-01-04 09:34
375 查看
Java正则表达式有3中量词匹配模式:
1.贪婪量词:
先看整个字符串是否匹配,如果没有发现匹配,则去掉最后字符串中的最后一个字符,并再次尝试,如果还是没有发现匹配,那么,再次去掉最后一个字符串的最后一个字符,整个匹配过程会一直重复直到发现一个匹配或者字符串不剩任何字符。简单量词都是贪婪量词。
贪婪量词匹配时,首先将整个字符串作为匹配的对象,然后逐步从后向前移除不匹配的字符,尽可能找到最多的匹配。
2.惰性量词:
先看字符串中的第一个字符是否匹配,如果单独一个字符不够,则读入下一个字符,组成两个字符的字符串,如果还没有发现匹配,惰性量词继续从字符串中添加字符直到发现一个匹配或者整个字符串全部检查完都不匹配。惰性量词和贪婪量词工作方式恰好相反。
惰性量词匹配时,只匹配第一个字符,然后依次添加字符,尽可能找到最少匹配。
3.支配量词:
只尝试匹配整个字符串,如果整个字符串不能产生匹配,则不进行进一步尝试。
支配量词目前只有java中支持,支持量词是贪婪量词第一次匹配不成功时,阻止正则表达式继续匹配,使得正则表达式效率更高。
贪婪量词 惰性量词 支配量词 描述
X? X?? X?+ X出现0次或者1次
X* X*? X*+ X出现0次或者多次
X+ X+? X++ X出现1次或者多次
X{n} X{n}? X{n}+ X只出现n次
X{n,} X{n,}? X{n,}+ X至少出现n次
X{n,m} X{n,m}? X{n,m}+ X至少出现n次,至多不超过m次
1.贪婪量词:
先看整个字符串是否匹配,如果没有发现匹配,则去掉最后字符串中的最后一个字符,并再次尝试,如果还是没有发现匹配,那么,再次去掉最后一个字符串的最后一个字符,整个匹配过程会一直重复直到发现一个匹配或者字符串不剩任何字符。简单量词都是贪婪量词。
贪婪量词匹配时,首先将整个字符串作为匹配的对象,然后逐步从后向前移除不匹配的字符,尽可能找到最多的匹配。
2.惰性量词:
先看字符串中的第一个字符是否匹配,如果单独一个字符不够,则读入下一个字符,组成两个字符的字符串,如果还没有发现匹配,惰性量词继续从字符串中添加字符直到发现一个匹配或者整个字符串全部检查完都不匹配。惰性量词和贪婪量词工作方式恰好相反。
惰性量词匹配时,只匹配第一个字符,然后依次添加字符,尽可能找到最少匹配。
3.支配量词:
只尝试匹配整个字符串,如果整个字符串不能产生匹配,则不进行进一步尝试。
支配量词目前只有java中支持,支持量词是贪婪量词第一次匹配不成功时,阻止正则表达式继续匹配,使得正则表达式效率更高。
贪婪量词 惰性量词 支配量词 描述
X? X?? X?+ X出现0次或者1次
X* X*? X*+ X出现0次或者多次
X+ X+? X++ X出现1次或者多次
X{n} X{n}? X{n}+ X只出现n次
X{n,} X{n,}? X{n,}+ X至少出现n次
X{n,m} X{n,m}? X{n,m}+ X至少出现n次,至多不超过m次
相关文章推荐
- 《Java编程思想》学习笔记4——集合容器
- Java Web学习总结(9)——servlet和Jsp生命周期解读
- Java Web学习总结(9)——servlet和Jsp生命周期解读
- Java Web学习总结(9)——servlet和Jsp生命周期解读
- java二维码的生成与解析代码
- 《Java编程思想》学习笔记3——内部类
- 【Java】跨域传输数据中文乱码
- 《Java编程思想》学习笔记2——对象初始化和面向对象特性
- Java Web学习总结(10)——Session详解
- Java Web学习总结(10)——Session详解
- Java Web学习总结(10)——Session详解
- 《Java编程思想》学习笔记1——面向对象和JVM基础
- Java线程安全和非线程安全
- springboot整合freemarker
- Java中的封装
- 圣思园java se培训总结(89-)(流,节点流,过滤流)
- 圣思园java se培训总结(86-)IO
- 圣思园java se培训总结(85-)(内部类)
- 圣思园java se培训总结(82-)(观察者设计模式)
- MyEclipse 使用javadoc导出项目的API文档