正则表达式(regular expression)
描述了一种字符串匹配的模式,可以用来检测一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的字符串。
1 匹配字符
String str = "A";
String regex = "[A-Z]";
System.out.println(str.matches(regex));
---------
结果:true
String str = "$%#";
String regex = "[^0-9][^0-9][^0-9]";// "[^0-9]" ^的意思是不是0到9
System.out.println(str.matches(regex));
--------------
结果:true
[0-9]:匹配0~9之间的任意一个字符
String str = "A12";
String regex = "[a-zA-Z][0-9][0-9]";
System.out.println(str.matches(regex));
2 特殊符号
点(.)号:匹配除了"\n"之外的任何单个字符
数字字符\d:等价于[0-9]
非数字字符\D:等价于[ˆ0-9]
单词字符\w: 等价于[a-zA-Z0-9]
非单词字符\W: 等价于[ˆA-Za-z0-9_]
注意,用的时候要加一个,例如 String regex = “\d”;
3 匹配数量
正则表达式*号:匹配前面的子表达式零次或多次
正则表达式+号:匹配前面的子表达式一次或多次
正则表达式?号:匹配前面的子表达式零次或一次
正则表达式{n}:n是一个非负整数。匹配正好n次。
正则表达式{n,}:n是一个非负整数。匹配至少n次。
正则表达式{n,m}:n是一个非负整数。匹配至少n次,至多m次
4 逻辑
XY匹配
先匹配X再匹配Y,顺序匹配
String str = "A1";
String regex = "[A-Z][0-9]";//[A-Z]匹配A,[0-9]匹配1
System.out.println(str.matches(regex));
--------
结果true
X|Y匹配
匹配X或者匹配Y,()括号表示一组
String gender = "保密";
// String regex = "[男][女]";// XY
String regex2 = "[男]|[女]|(保密)";// X|Y
System.out.println(gender.matches(regex2));
-----------
结果true