正则表达式

正则表达式所支持的合法字符

合法字符 说明
x 字符x(x可代表任何合法的字符)
\0mnn 八进制数0mnn所表示的字符
\xhh 十六进制值0xhh所表示的字符
\uhhhh 十六进制值0uhhhh所表示的Unicode字符
\t 制表符('\u0009')
\n 换行符('\u000A')
\r 回车符('\u000D')
\f 换页符('\u000C')
\a 报警符('\u0007')
\e Escape符('\u001B')
\cx x对应的控制符,例如\cM匹配Ctrl-M。

 正则表达式中的特殊字符

特殊字符 说明 匹配本身书写方式
. 匹配除了换行符\n之外的任何单字符 \.
     
$ 匹配一行的结尾 \$
^ 匹配一行的开头 \^
     
[] 用于确定中括号表达式的开始和结束位置 \[ \]
() 标记子表达式的开始和结束位置 \( \)
     
{} 用于标记前面子表达式出现频率 \{ \}
* 指定前面子表达式可以出现零次或多次 \*
+ 指定前面子表达式可以出现一次或多次 \+
? 指定前面子表达式可以出现零次或一次 \?
     
\ 用于转义下一个字符,或指定八进制、十六进制字符 \\
     
| 指定两项之间任选一项 \|

预定义字符

预定义字符 说明(匹配一个字符
. 可以匹配任何字符
\d 匹配0~9的所有数字
\D 匹配非数字
\s 匹配所有空白字符,包括空格、制表符、回车符、换页符、换行符等
\S 匹配所有非空白字符
\w 匹配所有的单词字符,包括0~9所有数字、26个英语字母和下划线(_)
\W 匹配所有的非单词字符

方括号表达式

例子 用途 说明
[acd] 表示枚举 表示匹配acd中任意一个字符
[a-f] 表示范围 表示匹配a~f中任意一个字符
[^acd] 表示求否 表示匹配非acd的任意一个字符

1. [a-z&&[def]]

2. [a-z&&[^bc]]

3. [a-z&&[^m-p]]

表示“与”运算

1.表示求a~z和def的交集,最终匹配def中任意一个字符

2.表示求a~z和非bc字符的交集,最终匹配在a~z中非bc的任意一个字符,即[ad-z]

3.表示求a~z和非m-p字符的交集,最终匹配在a~z中非m-p的任意一个字符,即[a-lq-z]

[a-d[m-p]] 表示“并”运算 和枚举类似,同[a-dm-p]

边界匹配符

边界匹配符 说明
^ 行的开头
$ 行的结尾
\b 单词的边界
\B 非单词的边界
\A 输入的开头
\G 前一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符
\z 输入的结尾

 

三种模式的数量表示符

贪婪模式(一致匹配下去,直到无法匹配) 勉强模式(匹配最少的字符) 占用模式(只有java支持) 说明
X? X?? X?+ X表达式出现零次或一次
X* X*? X*+ X表达式出现零次或多次
X+ X+? X++ X表达式出现一次或多次
X{n} X{n}? X{n}+ X表达式出现n次
X{n,} X{n,}? X{n,}+ X表达式最少出现n次
X{n,m} X{n,m}? X{n,m}+ X表达式最少出现n次,最多出现m次

总结:

1.在使用正则表达式匹配的过程中,都是按照字符串中的字符,从前往后逐个匹配的。

2.单个预定义字符、单个方括号表达式都是匹配单个字符。如果加上数量表示符,就可以简化正则表达式的书写。

例如需要匹配一个138开头的手机号,如果不用数量表示符,就应该这样写138\\d\\d\\d\\d\\d\\d\\d\\d,如果采用数量表达式,就可以这样表示138\\d{8}

3.正则表达式的书写方式都是从前往后单个字符、单个预定义字符、单个方括号表达式来组合书写,其中会插入边界匹配符以及数量表示符。

4.除了上面表格中指定的字符,其他字符如果在正则表达式中出现,一律作为普通字符对待。

 

 

常用正则表达式:

http://blog.jobbole.com/96052/

http://blog.csdn.net/onebigday/article/details/5429868

posted @ 2016-09-17 11:14  月色深潭  阅读(302)  评论(0编辑  收藏  举报