正则表达式, 贪婪模式
2018-02-28 10:24
375 查看
2018-2-28 10:15:09 星期三
好几年没怎么用过正则了, 正则有一个常见的用法就是非贪婪模式
方法一:
? 在 . + 和 * 之后 表示非贪婪匹配;
*、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
这和 ? 本身代表0次或1次的限制有关
方法二:
添加模式修饰符: U
举例(PHP):
结果:
好几年没怎么用过正则了, 正则有一个常见的用法就是非贪婪模式
方法一:
? 在 . + 和 * 之后 表示非贪婪匹配;
*、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
这和 ? 本身代表0次或1次的限制有关
. | 除了换行符外的任意字符(可用修饰符/s使之匹配换行符) |
.* | 匹配0个或多个任意字符 |
.+ | 匹配1个或多个任意字符 |
.? | 匹配0个或1个任意字符 |
a{2} | 匹配连续出现的2个a |
a{2,3} | 匹配连续出现的2个或3个a |
a{2,} | 匹配连续出现2个以上的所有a |
添加模式修饰符: U
举例(PHP):
$a = 'aaaa0123456789'; preg_match('#(\d+)#', $a, $match); print_r($match); //贪婪匹配, 匹配尽可能多的数字 preg_match('#(\d+?)#', $a, $match); print_r($match); //非贪婪匹配, 最多只匹配一个数字 preg_match('#(\d+)#U', $a, $match); print_r($match); //非贪婪匹配, 最多只匹配一个数字
结果:
//第3行匹配结果 Array ( [0] => 0123456789 [1] => 0123456789 ) //第4行匹配结果 Array ( [0] => 0 [1] => 0 ) //第5行匹配结果 Array ( [0] => 0 [1] => 0 )
相关文章推荐
- 正则表达式 贪婪模式 懒惰模式
- 正则表达式中的贪婪模式与非贪婪模式解析
- 【JavaScript】正则表达式--非贪婪模式截取任意字符串的笔记
- javascript 正则表达式数量词,字符串方法(match,search,replace,split),贪婪模式,惰性模式总结
- 正则表达式之贪婪模式讲解
- 正则表达式贪婪与非贪婪模式
- 正则表达式非贪婪模式和取反字符类的使用区别
- [转] 正则表达式贪婪与非贪婪模式
- flex中的正则表达式需要注意( 贪婪模式)
- [转] 正则表达式之 贪婪与非贪婪模式详解(概述)
- 正则表达式贪婪模式
- 正则表达式之 贪婪与非贪婪模式详解
- 关于正则表达式的贪婪与非贪婪模式
- python里使用正则表达式的非贪婪模式
- 正则表达式 贪婪模式和非贪婪模式
- 正则表达式:表达式的递归匹配及非贪婪模式的效率
- C#正则表达式之贪婪模式
- JAVA 正则表达式的三种模式: 贪婪, 勉强和占有的讨论
- Python正则表达式的贪婪模式和非贪婪模式
- 正则表达式的三种模式【贪婪、勉强、侵占】的分析