2.5 限定符(4)
来源:互联网 发布:中国单挑全世界知乎 编辑:程序博客网 时间:2024/06/16 09:52
如果在限定符*、+、?、{n}、{n,}和{n,m}之后再添加一个字符“?”,则表示尽可能少的重复字符“?”之前的限定符号的重复次数,这种方式匹配被称为懒惰匹配。与之相对应的是贪婪匹配,即仅仅使用单个限定符*、+、?、{n}、{n,}和{n,m}的匹配。常用的懒惰限定符如表2-6所示。
表2-6 常用懒惰限定符
字符或表达式
说明
*?
尽可能少地使用重复的第一个匹配。
+?
尽可能少地使用重复但至少使用一次。
??
使用零次重复(如有可能)或一次重复。
{n}?
等同于{n}。
{n,}?
尽可能少地使用重复但至少使用n次。
{n,m}?
介于n次和m次之间、尽可能少地使用重复。
以下正则表达式匹配以字母a开头的、以字母b结束的、最长的字符串。此时,这是一种贪婪匹配。
a.*b (48)
以下正则表达式匹配以字母a开头的、以字母b结束的、最短的字符串。此时,这是一种懒惰匹配。
a.*?b (49)
如果将正则表达式a.*b应用于字符串“aabab”,则匹配字符串“aabab”。如果将正则表达式a.*?b应用于字符串“aabab”,则匹配字符串“aab”和字符串“ab”,而不会匹配字符串“aabab”。
使用工具Regex Tester分别测试正则表达式(48)和(49),结果分别如图2.12和2.13所示。
以下正则表达式匹配以字母a开头的、以字母b结束的、长度至少为3的字符串。此时,这是一种贪婪匹配。
a.+b (50)
以下正则表达式匹配以字母a开头的、以字母b结束的、长度至少为3的字符串。此时,这是一种懒惰匹配。
a.+?b (51)
正则表达式a.+?b在匹配过程中,字母a和字母b之间的字符串实际上只重复了1次。如果将正则表达式a.+b应用于字符串“avbab”,则匹配字符串“avbab”。如果将正则表达式a.+?b应用于字符串“avbab”,则匹配字符串“avb”,而不会匹配字符串“avbab”。使用工具Regex Tester分别测试正则表达式(50)和 (51),结果分别如图2.14和2.15所示。
- 2.5 限定符(4)
- 2.5 限定符(5)
- 2.5 限定符(3)
- 2.5 限定符 (2)
- 2.5 限定符(1)
- 2-4 const 限定符
- (8)const 限定符
- C++primer 2.5const限定符(未完)
- C++11笔记(4)——const 限定符
- 限定符
- 限定符
- 作用域限定符(::)的用法
- CUDA小记(6)函数限定符
- const限定修饰符
- 正则表达式限定符
- 限定符const
- const限定符
- java 限定符 final
- cookie概述
- 编写PHP扩展三步曲之一
- .Net中的反射 (转)
- 用Php扩展实现的简单框架1
- Artm-Analyzer Toolkits统计分析组件包共享版发布
- 2.5 限定符(4)
- 被遗忘的四个Javascript正则替换规则
- (C#)利用反射动态调用类成员[转载]
- 用Php扩展实现的简单框架 - 3
- shoutcast 例子分析
- 单向链表建立 排序
- 谈基于.Net平台开发中的模式窗体
- 用Php扩展实现的简单框架 - 4
- 2.5 限定符(3)