正则表达式笔记
正则表达式笔记
说明:绿色:强调 红色:匹配结果
1.贪婪与懒惰
贪婪: a.*b aabab
懒惰: a.*?b aabab
2.重复
* : 0到多
+ : 1到多
? : 0到1
{n,m} : n到m
{n,} : n到多
{n} : n
3. [] : 单个匹配
4.转义(查找元字符)
\ \. www.dsdda.com
5.分支(从左至右,懒惰)
| 0\d{2}-\d{8}|0\d{3}-\d{7} 012-1234567899990123-1234567
6.分组 与 向后引用
后向引用用于重复搜索前面某个分组匹配的文本 从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推
\b(?<Word>\w+)\b\s+\k<Word>\b kitty kitty
表4.常用分组语法 |
||
分类 |
代码/语法 |
说明 |
捕获 |
(exp) |
匹配exp,并捕获文本到自动命名的组里 |
(?<name>exp) |
匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) |
|
(?:exp) |
匹配exp,不捕获匹配的文本,也不给此分组分配组号 |
|
零宽断言 |
(?=exp) |
匹配exp前面的位置 |
(?<=exp) |
匹配exp后面的位置 |
|
(?!exp) |
匹配后面跟的不是exp的位置 |
|
(?<!exp) |
匹配前面不是exp的位置 |
|
注释 |
(?#comment) |
这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读 |
零宽断言(断言不算分组)
(?=exp) \b\w+(?=ing\b) I'm singing while you're dancing.
(?<=exp) (?<=\bre)\w+\b reading a book
负向零宽断言
(?!exp) \b((?!abc)\w)+\b 匹配不包含连续字符串abc的单词
(?!exp)
(?<=<(\w+)>).*(?=<\/\1>) <b>大大</b>
3. 元字符(特殊意义)
\b : 分界,限定位置 \bhi\b hihi hi hissa
\d : 一位数字 \d 1231215
\w: 一位数字或英文字母
^ : 开始位置
$ : 结束位置
*
+
?
(
)
7.反义字符
\W 匹配一个不是字母,数字,下划线,汉字的字符
\S 匹配一个不是空白符的字符
\D 匹配一个非数字的字符
\B 匹配一个单词开头或结束的位置
8.注释
(?#comment)来包含注释。例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)。
要包含注释的话,最好是启用“忽略模式里的空白符”选项,空白字符以及#后面到这一行结束的所有文本都将被当成注释忽略掉。例如,我们可以前面的一个表达式写成这样:
(?<= # 断言要匹配的文本的前缀 <(\w+)> # 查找尖括号括起来的字母或数字(即HTML/XML标签) ) # 前缀结束 .* # 匹配任意文本 (?= # 断言要匹配的文本的后缀 <\/\1> # 查找尖括号括起来的内容:前面是一个"/",后面是先前捕获的标签 ) # 后缀结束
参考:http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
posted on 2014-09-08 19:10 默默前行_huster 阅读(87) 评论(0) 编辑 收藏 举报