正则匹配
正则练习网站 :https://regex101.com/
1、字符类
() 正则组表示一个整体
[] 单个字符
[abc] 只能是a,b,c
[^abc] 除了abc之外的任何字符
[a-zA-Z] a到z A到Z 包括(范围)
[a-d[m-p]] a到d,或m到p == ([a-dm-p])
[a-z&&[def]] d,e,f 取交集
[a-z&&[^bc]] a到z除了b和c
[a-z&&[^m-p]] a到z除了m到p
那么我们来试一下,这里用Java来简单感受一下
String regex = "[abc]";
System.out.println("a".matches(regex));
System.out.println("d".matches(regex));
那如果我们不写括号呢
String regex = "abc";
System.out.println("a".matches(regex));
System.out.println("d".matches(regex));
这里就看得出俩个都为false,它约等于[a] [b] [c],意思就是必须是abc这三个字符同时存在才在这个范围里面
2、预定义字符类
. 任意一个字符
\d 一个数字:[0-9]
\D 非数字:[^0-9]
\s 一个空白字符:[\t\0B\f\r]
\S 非空白字符:[^\s]
\w [a-zA-Z_0-9] 英文、数字、下划线
\W [^\w] 一个非单词字符
这里需要注意一个东西
\ : 转义字符 声明 斜线后面的当成本身使用
3、数量
X? X,一次或0次
X* X,零次或多次(任意次数)
X+ X,一次或多次
X{n} X,正好n次
X{n,} X,至少n次
X{n,m} X,至少n但不超过m次