【笔记】正则表达式[1]

元字符

符号

意思

示范

详例

\d

任意一个数字

\d{2}-\d{8}

22-12345678

*

*前的符号重复任意次数

次数可以为零

\d*

222222222222...

2

\s

任意的空白符

全半角空格,tab,换行符

\bhi\b\s\bLucy\b

hi

Lucy

+

和*用法相似

次数>=1

\d+

22

2222

\w

匹配任何单词字符串

等价于[A-Z a-z 0-9]

\d{2}\w\s\d{6}

22h 222222

222 222222

22_ 222222

^

匹配行的开始

^\d{2}

匹配元:wwwwww22wwwwwww

匹配结果:22

$

匹配行的结束

[a-z]{2}$

匹配元:2222222kfjda999999999

匹配结果:kf

?

重复0或1次

^2?$

匹配元:6dfadfhah22222jdfkajldkf9

匹配结果:22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分枝条件  | 符合 

稍微知晓编程的人都懂得,|符号的意思是或。

0\d{2}-\d{8}|0\d{3}-\d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)

但是也要注意分支条件的顺序

例如:

美国就邮政编码是5位数字或5位数字-4位数字

因此就可以用\d{5}-\d{4}|\{5}进行匹配

但是如果写成\d{5}|\d{5}-\d{4}|

那么就只会匹配5位的邮编(以及9位邮编的前5位)

反义

代码/语法说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符

分组

我们可以对某个单词进行重复匹配,那么对一组字符串又该如何重复匹配呢??我们可以在需要匹配的正则外面加上小括号加以分组。

比如:

(\d{3}.){3}\d{4},这个表达式就能匹配出173.169.111.9999

 

posted @ 2012-09-12 22:06  のんきネコ  阅读(326)  评论(0编辑  收藏  举报