C++11-正则表达式笔记
来源:互联网 发布:凤凰网域名注册 编辑:程序博客网 时间:2024/05/30 05:17
原文可以查看:http://dragon.cnblogs.com/archive/2006/05/08/394078.html
讲的非常好。
现在只是将一些留作以后查询:
1.正则导向的引擎总是返回最左边的匹配
这是需要你理解的很重要的一点:即使以后有可能发现一个“更好”的匹配,正则导向的引擎也总是返回最左边的匹配。
当把<<cat>>应用到“He captured a catfish for his cat”,引擎先比较<<c>>和“H”,结果失败了。于是引擎再比较<<c>>和“e”,也失败了。直到第四个字符,<<c>>匹配了“c”。<<a>>匹配了第五个字符。到第六个字符<<t>>没能匹配“p”,也失败了。引擎再继续从第五个字符重新检查匹配性。直到第十五个字符开始,<<cat>>匹配上了“catfish”中的“cat”,正则表达式引擎急切的返回第一个匹配的结果,而不会再继续查找是否有其他更好的匹配。
2.字符集是由一对方括号“[]”括起来的字符集合。使用字符集,你可以告诉正则表达式引擎仅仅匹配多个字符中的一个。3.在左方括号“[”后面紧跟一个尖括号“^”,将会对字符集取反。结果是字符集将匹配任何不在方括号中的字符。不像“.”,取反字符集是可以匹配回车换行符的。
4.“]”代表字符集定义的结束;“\”代表转义;“^”代表取反;“-”代表范围定义。
5.<<\d>>代表<<[0-9]>>;
6.<<\w>>代表单词字符。这个是随正则表达式实现的不同而有些差异。绝大多数的正则表达式实现的单词字符集都包含了<<A-Za-z0-9_]>>。
7.<<\s>>代表“白字符”。这个也是和不同的实现有关的。在绝大多数的实现中,都包含了空格符和Tab符,以及回车换行符<<\r\n>>。
8.取反字符集的简写
<<[\S]>> = <<[^\s]>>
<<[\W]>> = <<[^\w]>>
<<[\D]>> = <<[^\d]>>
9.如果你用“?*+”操作符来重复一个字符集,你将会重复整个字符集。而不仅是它匹配的那个字符。正则表达式<<[0-9]+>>会匹配837以及222。
?:告诉引擎匹配前导字符0次或一次。事实上是表示前导字符是可选的。
+:告诉引擎匹配前导字符1次或多次
*:告诉引擎匹配前导字符0次或多次
10.限制性重复
许多现代的正则表达式实现,都允许你定义对一个字符重复多少次。词法是:{min,max}。min和max都是非负整数。如果逗号有而max被忽略了,则max没有限制。如果逗号和max都被忽略了,则重复min次。
因此{0,}和*一样,{1,}和+ 的作用一样。
你可以用<<\b[1-9][0-9]{3}\b>>匹配1000~9999之间的数字(“\b”表示单词边界)。<<\b[1-9][0-9]{2,4}\b>>匹配一个在100~99999之间的数字。
11.“.”等于是字符集[^\n\r](Window)或[^\n]( Unix)的简写
12.重复操作与后向引用
当对组使用重复操作符时,缓存里后向引用内容会被不断刷新,只保留最后匹配的内容。例如:<<([abc]+)=\1>>将匹配“cab=cab”,但是<<([abc])+=\1>>却不会。因为([abc])第一次匹配“c”时,“\1”代表“c”;然后([abc])会继续匹配“a”和“b”。最后“\1”代表“b”,所以它会匹配“cab=b”。
- 【C语言】正则表达式学习笔记
- C#Regex正则表达式学习笔记
- C++11-正则表达式笔记
- [JS]笔记11之正则表达式
- Python3学习笔记11-正则表达式
- 正则表达式(C#)
- 正则表达式之C#
- C#中的正则表达式
- 正则表达式(linux/C++)
- C的正则表达式
- c#正则表达式
- linux c 正则表达式
- linux c 正则表达式
- linux C正则表达式
- linux c 正则表达式
- C语言正则表达式
- C语言正则表达式
- C语言正则表达式
- 05_ 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历
- 开源力量公开课第三十四期-《微软+开源:如何使用微软公有云Azure上的开源软件》
- nodejs 入门总结
- Mfg tool WINCE下载
- 将博客搬至CSDN
- C++11-正则表达式笔记
- IOS开发-UIWebView网页视图
- 第三方应用市场
- 【Linux基础】制作qte-4.7.0带tslib的根文件系统 [复制链接]
- 数据结构排序
- Eclipse和debug的一些快捷键
- 【修改注册表项 实现网络加速】
- 用 SQL 脚本读取Excel 中的sheet数量及名称
- 【黑马程序员】Socket文件传输