正则表达式是一种窥视字符串结构的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字符串。
^ 表示行的开始
$ 表示行的结束
如:
^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]
表示的是匹配不以字母和下划线开头的变量名
限界符
说明
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}
表示预定义字符集
预定义字符
说明
\d
任意一个十进制数,相当于[0-9]
\D
任意一个非十进制数
\s
任意一个空白字符(空格、换行符、换页符、回车、制表),即[\f\t\r\n]
\S
任意一个非空白字符
\w
任意一个单词字符,相当于[a-zA-Z0-9_]
\W
任意一个非单词字符
定义断言的限定符
限定符
说明
\b
单词定界符,用来匹配字符串中的某些位置
\B
非单词定界符序列
\A
总是能够匹配带搜索文本的起始位置
\Z
表示在未指定任何模式下的匹配的字符,通常是字符串的末尾位置
\z
子匹配字符串的末尾,而不考虑任何的换行符
\G
当前匹配的起始位置