一、正则表达式基本要素
1、字符类
. 匹配任意一个字符,如:succ.ss可以匹配到success(匹配除 "
" 之外的任何单个字符。要匹配包括 '
' 在内的任何字符,请使用象 '[.
]' 的模式。)
[] 匹配[]内任意一个字符,如:98fe[abcd]bd1可以匹配到98feabd1、98febbd1、98fecbd1、98fedbd1
^ []里,以^开头的,匹配除括号内字符的其他字符,如:rt[^nmkk]Code可以匹配到rtaCode、rtbCode,反正就是第3个字符不能为nmkk中的任何一个
- 表示一个[]里的某个范围,如:小写26个字母[a-z]、个位数字[0-9]
2、数量限定符
? 它前面的字符应该匹配0次或一次,如:s? 可以匹配到一个s或0个s
+ 它前面的字符应匹配一次或多次,如:s+ 可以匹配到一个s或多个s
* 它前面的字符应匹配0次或多次,如:s*可以匹配到0个或多个s
{n} 它前面的字符应匹配n次,如:s{4}精确匹配4个s ;[2-8][0-9]{4}精确匹配一个五位数,万位是2-8的数字
{n,} 它前面的字符至少匹配n次,如:[1-9][0-9]{3,}匹配到的数字至少是4位数的,可以大于4位数
{n,m} 它前面的字符至少匹配n次,最多m次,如:[0-9]{1,3}.[0-9]
{1,3}.[0-9]{1,3}.[0-9]{1,3}匹配一个IP地址(代表的是转义符)
3、位置限定符
^ 匹配文本里某一行的行首位置,如:^auto 匹配文本内的以auto开头的行首
$ 匹配文本里某一行末尾的位置,如:true$ 匹配到以true结尾的行尾
< 匹配文本里某个以so开头的单词,如:<so 匹配到sorry,匹配不到suso
> 匹配文本里某个以ss结尾的单词,如:ss> 匹配到success,匹配不到ssus
匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。,[a-zA-Z]{4}匹配文本里的四个字母的单词
B 匹配非单词边界。如:'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
4、特殊符号
转义符,普通字符转义为特殊字符,特殊字符转义为普通字符。普通字符 < . 需要转义,写成 < . \
() 将表达式的一部分括起来,组成一个单元,对整个单元使用数量限定符,如:匹配IP地址 ([0-9]{3}.){3}[0-9]{1,3}
| 连接两个子表达式,表示或的意思,如:brand(Detail|sorry)匹配brandDetail或者brandsorry(注:| 两边不要有空格)
d 匹配所有数字字符,相当于[0-9]
D 匹配非数字字符,相当于[^0-9]
w 匹配数字字母下划线,相当于[a-zA-Z0-9]
W 匹配非数字字母下划线,相当于[^a-zA-Z0-9]、[^w]
s 匹配任意空白字符,等价于 [
f]。[
f](
代表回车, 水平制表,
换行,f换页)
S 匹配任何非空白字符。等价于 [^ f
v]。(不包括空格)