正则表达式
正则表达式(Regex,RE),主要用于:
匹配判断、分隔操作、替换操作(网络爬虫)
匹配规则:
规范 | 描述 | 规范 | 描述 |
---|---|---|---|
\\ | 反斜线(\)字符 | \t | 制表符 |
\a | 换行 | [abc] | 字符a、b或c |
[^abc] | 除了a、b、c之外的任意字符 | [a-zA-Z0-9] | 由字母、数字组成 |
\d | 数字 | \D | 非数字 |
\w | 字母、数字、下划线 | \W | 非字母、数字、下划线 |
\s | 所有空白字符(换行、空格等) | \S | 所有非空白字符 |
^ | 行的开头 | $ | 行的结尾 |
. | 匹配除换行符之外的任意字符 |
数量表示
规范 | 描述 | 规范 | 描述 |
---|---|---|---|
X | 必须出现一次 | X? | 可以出现0次或1次 |
X* | 可以出现0次、1次或多次 | X+ | 可以出现1次或多次 |
X{n} | 必须出现n次 | X{n,} | 必须出现n次以上 |
X{n,m} | 必须出现n-m次 |
逻辑运算符
规范 | 描述 | 规范 | 描述 |
---|---|---|---|
XY | X规范后跟着Y规范 | X|Y | X规范或Y规范 |
(X) | 作为一个捕获组规范 |
判断字符串全由数字组成:
"123456".matches("\\d*{5,10}");
// 由于java本身\是转义,所以需要两个\
// matches为String类的方法
public boolean matches(String regex) {
return Pattern.matches(regex, this);
}
public static boolean matches(String regex, CharSequence input) {
Pattern p = Pattern.compile(regex); // 规则。根据正则表达式规范执行模式对象
Matcher m = p.matcher(input); // 匹配器。根据传入的输入数据,做匹配判断
return m.matches();
}
判断手机号码:
input = "13943265799";
// 第一位^1,字符串以数字1开头;第二位[3|4|5|7|8],3或4或...;后面再跟9位数字,必须以这个结束,最后加$
String regex = "^1[3|4|5|7|8]\\d{9}$";
input.matches(regex);
一些常用示例见正则表达式-百度百科