正则表达式 用法总结 part1
正则表达式的用途
搜索 and 替换
简单字符匹配
匹配目标文本
匹配文本中的某字符(类似于Word等工具的查找功能)
匹配任意字符(通配符)
. – 可以匹配任何单字符,包括字母,数字,标点甚至是.本身
.. – 匹配两个任意字符
注:若想匹配.
本身,则需要对其进行转义,即 \.
匹配一组字符
匹配多个字符中的某一个字符
[abc]*
– 表示匹配所有以a或b或c为开头的文本
[rR]eg[eE]x
– 表示匹配 regex, Regex, regEx, RegEx
匹配字符区间内的某一个字符
[a-z]*
– 表示匹配所有以英文小写字母(a-z)为开头的文本
[a-zA-Z0-9]*
– 表示匹配所有以英文字母和数字为开头的文本
取非匹配
[^a-z]*
– 表示匹配所有不以英文小写字母(a-z)为开头的文本
使用元字符
对特殊字符进行转义
array\[0\]
– 匹配文本array[0]
,若不转义,则匹配array0
匹配空白字符
[\b]
– 回退一个字符(Backspace),注意要加[]
,\b
单独使用另有含义
\f
– 换页符
\n
– 换行符aababa
\r
– 回车符(Enter)
\t
– 水平制表符(Tab)
\v
– 垂直制表符
匹配特定字符类型
\d
– 匹配任一数字,相当于[0-9]
\D
– 匹配任一非数字,相当于[^0-9]
\w
– 匹配任一字母数字下划线,相当于[a-zA-Z0-9_]
\W
– 匹配任一非字母数字下划线字符,相当于[^a-zA-Z0-9_]
\s
– 匹配任一空白字符,相当于[\f\r\n\t\v]
\S
– 匹配任一非空白字符,相当于[^\f\r\n\t\v]
\x0A
– 匹配十六进制值,0x0A = 10 = ASCII(\n),\x
+ 十六进制
,相当于\n
\011
– 匹配八进制值,011 = 9 = ASCII(\t),\0
+ 八进制
,相当于\t
\cZ
– 匹配控制字符Ctrl + Z
,实际使用中很少见
重复匹配
要想匹配同一字符(或者字符集合)的多次重复,只需要简单的在其后加上后缀+
即可。
+
匹配一个或多个字符(至少一个,不匹配零个字符的情况),若想匹配零个的情况,可使用*
(零个或多个任意字符),或者?
(若有则,匹配一个任意字符,否则不匹配)
有多个匹配
a+
– 匹配一个以上重复的a
,比如aaa
[ab]+
– 匹配一个以上重复的a
或者b
,比如aababa
[ab]*
– 匹配零个以上重复的a
或者b
a?c
– 匹配的字符是可选的,比如ac(?匹配了零个字符), abc, adc(?匹配了一个字符)
[a-z]{3}
–设定重复次数,相当于[a-z][a-z][a-z]
[a-z]{2,4}
–为重复的次数设定区间,相当于[a-z]
重复最少2次,最多4次
[a-z]{,4}
–为重复的次数设定最大值,相当于最小值为0
[a-z]{2,}
–为重复的次数设定最小值,相当于最大值为正无穷
防止过度匹配
+,*,{n,}匹配任意字符时,可能会过度的匹配(贪婪型),在其末尾加上?,使其工作时尽可能少的匹配字符(懒惰型)
Text:
<p>text1</p> and <p>text2</p>
<p>.*</p>
– 贪婪型,将匹配<p>text1</p> and <p>text2</p>
<p>.*?</p>
– 懒惰型,将匹配<p>text1</p>
,<p>text2</p>