什么是正则表达式?
正则表达式(Regular Expression),“Regular”意为“规则”、“规律”,Regular Expression 即“描述某种文本规则的表达式”。下文简称为“正则”。
正则的用途
既然正则描述了某种文本规则,那么我们就可以判断某文本是否符合某正则的规则,或者是利用某正则来找出符合其规则的文本。
举些例子:
- 判断字符串
abcde
里是否包含字符c
- 判断字符串
abcde-123
里是否包含数字 - 找出字符串
abcde
和abcde-123
的哪个字符串包含字符-
如何使用正则?
正则有很多语法,我们由浅到深逐个学习吧,这个网站可以在线测试正则。
字符串匹配
c 匹配字符 'c'
abc 匹配字符串 "abc"
转义字符
\r 匹配回车
\n 匹配换行符
\t 匹配制表符
\\ 匹配 \ 本身
\^ 匹配 ^ 本身
\$ 匹配 $ 本身
\. 匹配 . 本身
多种字符
\d 匹配任意一个数字,即 0~9 中任意一个
\w 匹配任意一个字母或数字或下划线,也就是 A~Z, a~z, 0~9, _ 中任意一个
\s 匹配包括空格、制表符、换页符等空白字符中任意一个
. 匹配除了换行符(\n)以外的任意一个字符
使用方括号 [ ]
包含一系列字符,匹配 [ ]
里的任意一个字符,如:
[ab5@] 匹配 "a" 或 "b" 或 "5" 或 "@"
[^abc] 匹配除 "a","b","c" 以外的任意一个字符
[f-k] 匹配 "f"~"k" 之间的任意一个字母
[^A-F0-3] 匹配 "A"~"F","0"~"3" 以外的任意一个字符
多次匹配
{n} 表达式重复 n 次,如 "\w{2}" 相当于 "\w\w"
{m,n} 表达式至少重复 m 次,最多重复 n 次,如 "ba{1,3}" 可以匹配 "ba" 或 "baa" 或 "baaa"
{m,} 表达式至少重复 m 次,如 "\w\d{2,}" 可以匹配 "a12","_456","M12344"...
? 表达式出现 0 或 1次,相当于 {0,1},如 "a[cd]?"可以匹配 "a","ac","ad"
+ 表达式至少出现 1 次,相当于 {1,},如 "a+b" 可以匹配 "ab","aab","aaab"...
* 表达式不出现或出现任意次,相当于 {0,},比如:"\^*b"可以匹配 "b","^^^b"...
特殊符号
^ 与字符串开始的地方匹配,不匹配任何字符
$ 与字符串结束的地方匹配,不匹配任何字符
\b 匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符
| 匹配 | 左右两个表达式
举例1:表达式 ^aaa
在匹配 xxx aaa xxx
时,匹配失败。因为 ^
要求与字符串开始的地方匹配,因此,只有当 aaa
位于字符串的开头的时候,^aaa
才能匹配,如 aaa xxx xxx
。
举例2:表达式 aaa$
在匹配 xxx aaa xxx
时,匹配失败。因为 $
要求与字符串结束的地方匹配,因此,只有当 aaa
位于字符串的结尾的时候,aaa$
才能匹配,如 xxx xxx aaa
。
举例3:表达式 .\b.
在匹配 @@@abc
时,匹配成功,匹配到的内容是 @a
。进一步说明:\b
与 ^
和 $
类似,本身不匹配任何字符,但是它要求它在匹配结果中所处位置的左右两边,其中一边是 \w
范围,另一边是 非\w
的范围。
举例4:表达式 \bend\b
在匹配 weekend,endfor,end
时,匹配成功,匹配到的内容是 end
。
举例5:表达式 Tom|Jack
在匹配 I'm Tom, he is Jack
时,匹配成功,匹配到的内容是 Tom
。匹配下一个时,匹配成功,匹配到的内容是 Jack
。
其它语法
其它更多的语法,可阅读下面的参考资料。