用于正则表达式的通配符:
\d 匹配数字0-9
\D 匹配任何非数字字符
\w 匹配单词字符, 包括大小写字母a-z,
A-Z, 数字0-9和下划线_
\W 匹配任何非单词字符
\s 匹配任何空白字符, 包括空格 制表符
换页符(即匹配\n \r \v \f 以及空格)
\S 匹配任何非空白字符
. 匹配除换行符(\n)之外的任何字符
可选字符集 []
[abc] 表示该位置可以出现字母a b c
[A-D] 表示该位置可以出现字母A B C D
[A-DM-P] 表示该位置可以出现字母A到D或M
到P
[12] 表示该位置可以出现数字1或2
[1-5] 表示该位置可以出现数字1到5
[0-57-9] 表示该位置可以出现除6以外的所
有数字
[\s\S] 表示该位置可以出现任何字符,
包括任何可见字符和不可见字符
反向字符集 ^
[^x] 匹配除x以外的所有字符
[^abc] 匹配除a b c 以外的所有字符
[^0-9] 匹配除0-9以外的所有字符
[^#] 匹配除#以外的所有字符
[^\n] 匹配除换行符\n以外的所有字符
或匹配 |
"x|y" 匹配"x"或"y"
"(tr|b)ee" 匹配tree或bee
数量限定符 * + {} ?
* 将前面的字符重复0或多次
+ 将前面的字符重复1或多次
? 将前面的字符重复0或1次
{n} 将前面的字符重复n次
{n,} 将前面的字符至少重复n次
{n,m} 将前面的字符重复n至m次
*? 将前面的字符重复0或多次, 尽量少
重复
+? 将前面的字符重复1或多次, 尽量少
重复
?? 将前面的字符重复0或1次, 尽量少
重复
{n}? 将前面的字符重复n次, 尽量少重复
{n,}? 将前面的字符至少重复n次, 尽量少
重复
{n,m}? 将前面的字符重复n至m次, 尽量少
重复
定位符: ^ & \b
^ 匹配字符串的开头位置
& 匹配字符串的结尾位置
\b 匹配单词的边界位置
\B 匹配不是单词的边界位置
\G 匹配上一个匹配结果的位置
\A 匹配字符串开头位置, 类似^
\Z 匹配字符串结尾位置或换行符所在的位
置
\z 匹配字符串结尾位置, 类似&
分组 ()
如:
asdfgas@qq.com
可以通过下面的正则表达式来匹配,
"(\w+)@(\w+)\.(\w+)"
()将上面的正则表达式分成3组
下面的正则表达式有5组, 最外面的括弧为
第一组,最里面的括弧为第四和第五组
"( ( ) ( ( ) ( ) ) )"
非捕获分组 ?:
正向预查 ?=
反向预查 ?<=
负正向预查 ?!
负反向预查 ?<! |
用于正则表达式的通配符:
\d 匹配数字0-9
\D 匹配任何非数字字符
\w 匹配单词字符, 包括大小写字母a-z,
A-Z, 数字0-9和下划线_
\W 匹配任何非单词字符
\s 匹配任何空白字符, 包括空格 制表符
换页符(即匹配\n \r \v \f 以及空格)
\S 匹配任何非空白字符
. 匹配除换行符(\n)之外的任何字符
可选字符集 []
[abc] 表示该位置可以出现字母a b c
[A-D] 表示该位置可以出现字母A B C D
[A-DM-P] 表示该位置可以出现字母A到D或M
到P
[12] 表示该位置可以出现数字1或2
[1-5] 表示该位置可以出现数字1到5
[0-57-9] 表示该位置可以出现除6以外的所
有数字
[\s\S] 表示该位置可以出现任何字符,
包括任何可见字符和不可见字符
反向字符集 ^
[^x] 匹配除x以外的所有字符
[^abc] 匹配除a b c 以外的所有字符
[^0-9] 匹配除0-9以外的所有字符
[^#] 匹配除#以外的所有字符
[^\n] 匹配除换行符\n以外的所有字符
或匹配 |
"x|y" 匹配"x"或"y"
"(tr|b)ee" 匹配tree或bee
数量限定符 * + {} ?
* 将前面的字符重复0或多次
+ 将前面的字符重复1或多次
? 将前面的字符重复0或1次
{n} 将前面的字符重复n次
{n,} 将前面的字符至少重复n次
{n,m} 将前面的字符重复n至m次
*? 将前面的字符重复0或多次, 尽量少
重复
+? 将前面的字符重复1或多次, 尽量少
重复
?? 将前面的字符重复0或1次, 尽量少
重复
{n}? 将前面的字符重复n次, 尽量少重复
{n,}? 将前面的字符至少重复n次, 尽量少
重复
{n,m}? 将前面的字符重复n至m次, 尽量少
重复
定位符: ^ & \b
^ 匹配字符串的开头位置
& 匹配字符串的结尾位置
\b 匹配单词的边界位置
\B 匹配不是单词的边界位置
\G 匹配上一个匹配结果的位置
\A 匹配字符串开头位置, 类似^
\Z 匹配字符串结尾位置或换行符所在的位
置
\z 匹配字符串结尾位置, 类似&
分组 ()
如:
asdfgas@qq.com
可以通过下面的正则表达式来匹配,
"(\w+)@(\w+)\.(\w+)"
()将上面的正则表达式分成3组
下面的正则表达式有5组, 最外面的括弧为
第一组,最里面的括弧为第四和第五组
"( ( ) ( ( ) ( ) ) )"
非捕获分组 ?:
正向预查 ?=
反向预查 ?<=
负正向预查 ?!
负反向预查 ?<!