正则表达式4____重复匹配(2)
来源:互联网 发布:男性粘液丝高 知乎 编辑:程序博客网 时间:2024/06/05 14:50
为了对重复性匹配有更多的控制,正则表达式提供了一个用来设定重复次数(interval) 的语法,重复次数用{}来指定
{和}是元字符,如果需要匹配{和}本身,必须用\对它们进行转义.
1 为重复匹配次数设定一个精确的值
如匹配一个RGB值, #[[:xdigit:]]{6} 或#[0-9a-fA-F]{6}就可以实现
2 为重复匹配次数设定一个区间
{}可以用来为重复匹配次数设定一个区间,也就是为重复匹配次数设定一个最小值和一个最大值.
看一个例子
4/8/03 10-6-2004 2/2/2 01-01-01
正则表达式 : \d{1,2}[-\/]\d{1,2}[-\/]\d{2,4}
结果
4/8/03 10-6-2004 2/2/2 01-01-01
在这个例子中,使用了/的转义序列\ /, 实际上在许多正则表达式中是不必要的, 但最好还是使用转义符号
{0,3}表示重复次数可以是0,1,2,3 ,另外? 等价于{0,1}
3 匹配 至少重复多少次
用法 {3, }:表示至少重复3次, 注意: 如果遗漏大括号里的“,” 将变成精确匹配
4 防止过度匹配
*,+ 都是所谓“贪婪型” 元字符
看一个示例, 请仔细体会
This offer is not available to customers living in <B>AK</B> and <B>HI</B>
正则表达式 <[Bb]>.*?</[Bb]>
结果
This offer is not available to customers living in <B>AK</B> and <B>HI</B>
注意如果表达式为 <[Bb]>.*</[Bb]> ,将匹配一个,从第一个<B>匹配到最后一个</B>, 因为*和+都是所谓的"贪婪型" 元字符,它们在进行匹配时是多多益善,而不是适可而止,
它们会尽可能地从一段文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配到碰到第一个匹配时为止.
要解决这个问题,需要使用这些元字符的 "懒惰型" 版本, 也就是匹配尽可能少的字符,懒惰型元字符语法:只要给贪婪型元字符加上一个?后缀即可
常用的贪婪型元字符和它们的懒惰型版本
___________________________________________________________________________
贪婪型元字符 懒惰型元字符
___________________________________________________________________________
* *?
+ +?
{n, } {n, } ?
___________________________________________________________________________
*? 是 * 的懒惰型版本, 在上面例子中, 使用了懒惰的 *?, 第一个匹配将仅限于AK,原始文本里的 <B>HI</B>成为了第二个匹配
- 正则表达式4____重复匹配(2)
- 正则表达式3____重复匹配
- 正则表达式-重复匹配
- 正则表达式 匹配重复数字
- 正则表达式匹配重复字符串
- 正则表达式匹配不确定重复
- python 正则表达式 重复匹配
- 正则表达式 2____元字符
- JavaScript中的正则表达式对象4--重复匹配
- 黑马程序员____基础____正则表达式
- js 正则表达式匹配去除重复字符
- 正则表达式学习(七)重复匹配
- 正则表达式5——重复匹配
- 正则表达式-重复匹配(二)
- 正则表达式的重复匹配问题
- 正则表达式(三)-- 重复匹配
- 正则表达式入门之重复匹配
- 正则表达式-2(匹配)
- Slashdot:技术怪才的新闻网站
- 自己写的明文加密程序的源代码(支持32M的文本文件)
- linux 命令
- 程序员夜话
- Java多线程示例:4个售票员卖1000张火车票
- 正则表达式4____重复匹配(2)
- 什么是绿色计算(Green Computing)?
- mysql5安装
- 店铺考勤系统
- 第一次写文章
- postgres无法访问数据库
- mysql
- 数据库课程总结(ORACLE)
- poj Cow Hurdles floyd基础题!!!!