在线测试工具: https://regex101.com/
一、限定符
1.?
? 会去匹配0个或1个字符,表示 ? 前面的字符可有可无。
2.*
* 会去匹配0个或多个字符,表示 * 前面的字符可以出现0次也可以出现多次。
3.+
+ 会去匹配1次以上的字符,表示 + 前面的字符出现1次及以上。
4.{}
{} 可以指定字符出现的次数,表示 {} 前面的字符出现几次。
{} 也可以指定字符出现的次数范围,中间用 , 隔开。
下面表示出现的次数是2次及以上。
下面表示出现的次数是6次及以下。
用 () 匹配多个字符。
二、或运算符
| 表示或者,在下面的例子中先去匹配a和空格,再去匹配后面的cat或者dog,如果不加括号就只能匹配出来dog了。
三、字符类
1.[]
[] 表示匹配的字符只能取自它们。
2.常见字符类
[a-z]:所有的小写英文字符。
[a-zA-Z]:所有的英文字符。
[a-zA-Z0-9]:所有的英文字符和数字。
3.^
^ 表示脱字符,匹配 ^ 后面列出的以外的字符。
四、元字符
\d 数字字符(0-9)
\w 单词字符(英文+数字+下划线)
\s 空白字符(tab+换行符)
\D 非数字字符
\W 非单词字符
\S 非空白字符
\b 标注字符边界
. 任意字符(除换行符)
^ 匹配行首
$ 匹配行尾
五、贪婪与懒惰匹配
贪婪匹配:尽可能多的匹配字符。
懒惰匹配:尽可能少的匹配字符。