正则表达式非贪婪模式的应用
来源:互联网 发布:moeloader 类似软件 编辑:程序博客网 时间:2024/05/14 02:45
贪婪模式又叫匹配优先模式,在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式恰恰相反,在整个表达式匹配成功的前提下,尽可能少的匹配,针对的量词包括:
{m, n}{m, }?*+
从书写正则表达式的差异来看,它们的唯一区别在于非贪婪模式在贪婪模式的量词后面添加“?”,如下:
{m, n}?{m, }???*?+?
下面看一个具体的例子,从“[]”提取需要的字符,首先是贪婪模式:
// 需要提取的字符串String str = "[DTools] [logs] [Program Files]";// 因为是贪婪模式,所以要以[^\\]]寻找字符边界Pattern pat = Pattern.compile("\\[([^\\]]+)\\]");Matcher matcher = pat.matcher(str);while(matcher.find()) { // group(0)为匹配的字符串 System.out.println(matcher.group(1));}
因为是贪婪模式,所以我们必须找出明确的字符边界,所以要以“[^\]]”进行界定,如果采用非贪婪模式,则可以简化此操作,如下:
Pattern pat = Pattern.compile("\\[(.+?)\\]");
可见,使用非贪婪模式,可以简化正则表达式的复杂程度。
结论
充分理解贪婪模式与非贪婪模式的差异,可以更有效地使用正则表达式。
阅读全文
0 0
- 正则表达式非贪婪模式的应用
- 正则表达式的贪婪模式与非贪婪模式
- Python正则表达式的贪婪模式和非贪婪模式
- 正则表达式的“非贪婪模式”
- javascript正则表达式的非贪婪模式
- Qt 正则表达式的非贪婪模式
- 关于正则表达式的贪婪与非贪婪模式
- 正则表达式的贪婪与非贪婪模式
- 关于正则表达式的贪婪与非贪婪模式
- 正则表达式贪婪与非贪婪模式
- 正则表达式贪婪与非贪婪模式
- 正则表达式贪婪与非贪婪模式
- 正则表达式贪婪与非贪婪模式
- 正则表达式贪婪与非贪婪模式
- 正则表达式贪婪与非贪婪模式
- 正则表达式贪婪与非贪婪模式
- 正则表达式的贪婪与非贪婪
- 正则表达式的贪婪与非贪婪
- php-fpm 文章详解
- Django 模型层中实例方法要点
- 本地连接阿里云服务器ECS上的mysql
- Android开发日记
- systemtab备忘
- 正则表达式非贪婪模式的应用
- python cookbook 第一章阅读笔记
- cocoaPods Use the `$(inherited)` flag
- 常见eclipse快捷键
- 百练162:Post Office
- java中的工厂方法模式(先把模板方法模式看透)
- JS正则表达式exec()与String.prototype.match()的差异
- opencv显示图像的傅里叶谱图像(频谱)源代码详解
- 十六、数组