认识正则表达式
正则表达式主要用于在字符串的验证等方面,简化验证操作,比如下面的程序要验证遗传字符串是否全部由数字组成:
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "123" ;
if (isNumber(str)) {
int num = Integer.parseInt(str) ;//如果是字符串全由数字构成就转为int类型
System.out.println(num * 2);
}
}
public static boolean isNumber(String str) {
char data [] = str. toCharArray() ;
for(int x=0;x<data.length;x++){
if (data[x] > '9'|| data[x] < 'θ') {
return false ;
}
}
return true ;
}
}
而如果同样的功能,使用正则表达式就可以简化操作
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "123" ;
if (str.matches("\\d+") {//使用正则表达式,判断str这个字符串是否全是由数字构成
int num = Integer.parseInt(str) ;//如果是字符串全由数字构成就转为int类型
System.out.println(num * 2);
}
}
正则标记
https://docs.oracle.com/javase/9/docs/api/java/util/regex/Pattern.html
- 【数量:单个】字符匹配
- 任意字符:表示由任意字符组成;
- \\:匹配“\”;
- \n:匹配换行;
- \t:匹配制表符;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "a" ;
String str2 = "a";
System.out.println(str.matches(str2));//返回ture
}
}
}
- 【数量:单个】字符集(可以从里面任选一个字符)
- “[ abc ]”: 表示可能是字母a、b、c中的任意一个;
- “[ abc]” :表示不是由字母a、b、c中的任意一个;
- “[a-zA-Z]” :表示由一个任意字母所组成,不区分大小写;
- " [0-9]":表示由一位数字所组成;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "a" ;
String str2 = "[a-zA-Z]";//表示属于任何一个字母,不区分大小写
System.out.println(str.matches(str2));//返回ture
}
}
}
- 【数量:单个】简化字符集
- . : 表示任意的一一个字符;
- \d :等价于“[0-9]”范围;
- D :等价于“ [^0-9] ”范围;
- \s : 匹配任意的一位空格,可能是空格、换行、制表符;
- \S :匹配任意的非空格数据:
- \w : 匹配字母、数字、下划线,等价于“[a-zA-Z 0-9]”;
- \W : 匹配非字母、数字、下划线,等价于“[^a-zA-Z_ 0-9]";
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "a" ;
String str2 = "\\w";//表示属于任何一个字母,不区分大小写
System.out.println(str.matches(str2));//返回ture
}
}
}
- 数量表示,默认情况下只有添加上了数量单位才可以匹配多位字符
- 表达式? : 该正则可以出现0次或1次;
- 表达式* : 该正则可以出现0次、1次或多次;
- 表达式+ : 该正则可以出现1次或多次;
- 表达式{n}:表达式的长度正好为n次;
- 表达式{n}:表达式的长度为n次以上;
- 表达式{n,m}:表达式的长度在n~m次;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "asdfg" ;
String str2 = "\\w{1,}";//验证,1次以上正则
System.out.println(str.matches(str2));//返回ture
}
}
}
String类对正则表达式的支持
正则表达式也可以进行复杂字符串的修改处理。
方法名称 | 类型 | 描述 |
---|---|---|
public boolean matches(String regex) | 普通 | 将指定字符串进行正则判断 |
public String replaceAll(String regex, String) | 普通 | 替换全部 |
public String replaceFirst(String regex, String) | 普通 | 替换首个 |
public String[] split(String regex) | 普通 | 正则拆分 |
public String[] split(String regex, int limit) | 普通 | 正则拆分 |
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
String str = "JILO&*()@#$UISD&*(#$HUK34rwyhui*()@#$*()@#$" ;//要替换的字符串
String regex = "[^a-zA-Z]+" ;//正则表达式,判断所有非字母的数据
System. out . print1n(str . replaceAll(regex, ""));//替换掉字符串中所有的非字母
}
}