- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
漫谈正则表达式
1
1
2
正则意义——搜索
工作中搜索一类文件
开发中找到一段代码
运维中查找一行日志
程序中匹配一个邮箱
*.doc
2012??.log
使用通配符可以查找指定模式内容
1
3
最简单的正则
表达式:
能匹配的字符串:
shy
I am shy
Luckyshy
123shy321
shy
1
4
最简单的正则
我只想匹配自己:
匹配的结果:
\bshy\b
I am shy
Luckyshy
123shy321
shy
1
5
最简单的正则
\b \w \d () [] \W \s \S ……
(?) (?=) (?!) \P{Inname} \p{Inname}
这些符号的意义?
那这些又是什么?
\x{4e00}-\x{9fa5} \x80-\xff
再看看这几个呢?
2
6
正则表达式——字符
12个特殊的字符:$ ( ) * + . ? [ \ ^ { |
搜索它们自身需要在前面加反斜线来匹配。
字符组结构
[0-9] 数字0到数组9之间的任意一个
[a-z] 字母a到字母z的任意一个
[^shy] 除了字母shy的任意一个字符
[\u4e00-\u9fa5] 汉字中的任意一个汉字
[^a-z] 除了字母 a 到字母z的任意一个字符
[0-z] 匹配asicii码中0到z的其中一个字符
| 多选分支,或者关系
\1 \2 …反向引用 (\w) .*/\1 引用第一个捕获组的结果,用于匹配html的闭合标签
ab|cd a(b|c)d 匹配abcd还是abd,acd
2
7
正则表达式——模式
正则表达式定义:一个正则表达式通常被称为一个模式 (pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。
高级正则离不开模式
. 除换行以外的其他任意字符
\s 空白字符
\S 除空白字符以外的任意字符
\w 字母、数字、下划线
\W 除了字母、数字、下划线以外的任意字符
\d 数字 0-9
\D 除了数字之外的任意字符
\b 单词边界
^ 字符串的开始
$ 字符串结束
* 0到无数次
+ 1到无数次
? 0或者1次
{n} 重复N次
{n,} 重复至少N次
{n,m} n到m次
[] 字符组,字符范围
() 捕获组(子表达式)
2
8
正则表达式——位置
表达式:
匹配:
表达式:
匹配:
“^”代表字符串的开头
“$”代表字符串的结尾
^shy
Shy$
shy is Shy.
shy123Shy
Shy is shy.
Hi,shy!
shy is Shy
shy123Shy
Shy is shy.
Hi,shy!
^Shy$
2
9
正则表达式——选择
方括号“[ ]”匹配指定一堆字符中的一个。
例子说明一切
^[a-z]hy$ :why shy
^[A-Za-z]hy$ :why Why shy
^[uvwxyz]hy$ :why zhy yhy
[a-zA-Z0-9_.-] :email
[a-zA-Z0-9.-_] :not email(;?[]…)
2
10
正则表达式——重复
“+” 表示前一字符模式可以被重复1次或n次。
“*” 表示前一字符模式可以被重复0次或n次。
“{x,y}”表示前一字符模式可以被重复x到y次。
“{x,}” 表示前一字符模式可以被重复至少x次。
例子说明一切
^go+gle$ :gogle google gooooooooooogle
^g[aeiou]+gle$ :gogle geagle gaeiouaeiougle
^go*gle$ :ggle google gooooooooooogle
^go{2,4}gle$ :google gooogle goooole
^go{2,}gle$ :google gooogle goooole gooooole …
^(shy )*is( shy)*$ :shy is shy shy shy
2
11
正则表达式——分支
分支“|”用来指定几个规则只要匹配一个规则即成匹配。
例子说明一切
^com$|^org$|^net$ :com org net
^shy.(com|org|net)$ : shy+net shy$net
^go*gle$ :ggle google gooooooooooogle
^go{2,4}gle$ :google gooogle goooole
^go{2,}gle$ :google gooogle goooole gooooole …
^(shy )*is( shy)*$ :shy is shy shy shy
3
12
正则深入——起源
1
文档评论(0)