正则表达式
正则表达式是一中藐视字符串结构的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字符串。
行定位符
^ 表示行的开始
$ 表示行的结束
如:
^tm 表示的是以tm开头的一个行 ,tm query is correct
tm$ 则匹配的是,query is correct by tm
tm 则以上两者都可以匹配
单词定界符
字符类
正则表达式是区分大小写的,忽略大小写则需要“[]”。
如,我需要匹配一个tm字符串,不区分大小写,则格式是:
[Tt][Mm]
选择字符( | )
类似程序开发中的“或”。同样,需要匹配一个tm字符串,不区分大小写。还可以写为:
t|Tm|M
连字符( - )
如果需要匹配一个字母,写为[a,b,c,d,e,f,g,…A,B,C,D,E,F,G….]会很繁琐也会很累。
使用连字符则表示一定范围的意思,则字母就可以写为:
[a-zA-Z]
排除字符( [^] )
匹配不符合规则的变量,类似取反的意思。
[^a-zA-Z]
表示的是匹配不以字母和下划线开头的变量名
限定符( ? * + {n,m} )
限界符 |
说明 |
Demo |
? |
匹配前面的字符零次或一次 |
colou?r,可以匹配colour 或 color |
+ |
匹配前面的字符一次或多次 |
go+gle,匹配 gogle 到 go…gle |
* |
匹配前面的字符零次或多次 |
go*gle,匹配 ggle 到 go…gle |
{n} |
匹配前面的字符n次 |
go{2}gle,只匹配 google |
{n,} |
匹配前面的字符至少n次 |
go{2,}gle,匹配 google 到 go…gle |
{n,m} |
匹配前面的字符至少n次,最多m次 |
go{0,2}gle,匹配 ggle,gogle,google |
点号字符( . )
匹配除换行符外的任意一个字符
说明 |
表达式 |
Demo |
匹配以s开头、t结尾、中间包含一个字母的单词 |
^s.t$ |
sat、set、sit |
匹配第一个字符时r,第三个是s,最后一个是t的字符 |
^r.s.*t$ |
rast、risat、restet |
括号字符( ( ) )
你没猜错,和我们平时的计算式中括号的作用一样,改变计算的优先级
如,
(fa|mo)ther
先匹配的是括号内的|,再匹配括号外的。匹配的单词为:father,mother
转义字符( \ )
如“.”,“?”,“\”等字符已经有了自己的特殊含义,如果想使用本身的字符含义则需要在字符前加一个“\”来转义。
比如我们要匹配这么一个IP地址127.0.0.1
[0-9]{1,3}(\.[0-9]{1,3}){3}
反斜线( \ )
表示预定义字符集
预定义字符 |
说明 |
\a |
任意一个十进制数,相当于[0-9] |
\D |
任意一个非十进制数 |
\s |
任意一个空白字符(空格、换行符、换页符、回车、制表),即[\f\t\r\n] |
\S |
任意一个非空白字符 |
\w |
任意一个单词字符,相当于[a-zA-Z0-9_] |
\W |
任意一个非单词字符 |
定义断言的限定符
限定符 |
说明 |
\b |
单词定界符,用来匹配字符串中的某些位置 |
\B |
非单词定界符序列 |
\A |
总是能够匹配带搜索文本的起始位置 |
\Z |
表示在未指定任何模式下的匹配的字符,通常是字符串的末尾位置 |
\z |
子匹配字符串的末尾,而不考虑任何的换行符 |
\G |
当前匹配的起始位置 |