1、正则表达式使用场景:
所有类型都可用转换为String类型,String类型可以转换为所有类型,因此对String的处理格外重要
方便对String数据进行验证处理,以及方便进行复杂字符串的修改处理
正则表达式无法对内容进行修改,只能够对格式进行判断处理
2、【要验证的字符数量:单个字符】:验证是否为某字符的正则表达式
任意字符:只用于单个字符的匹配
\\:匹配”\“
\n:匹配换行
\t:匹配制表符
3、【要验证的字符数量:单个字符】:验证是否在某集合的正则表达式
[abc]:表示是否是字母a、b、c中的任意一个
[^abc]:表示是否不是字母a、b、c中的任意一个
[a-zA-Z]:表示是否是字母
[0-9]:表示是否是数字
4、【要验证的字符数量:单个字符】:简化字符集
.:表示是否是任意一个字符
\d:等价于"[0-9]"
\D:等价于"[^0-9]"
\s:表示是否是一个空格、换行、制表符
\S:表示是否不是一个空格、换行、制表符
\w:表示是否是字母、数字、下划线,等价于[a-zA-Z_0-9]
\W:表示是否不是字母、数字、下划线,等价于[^a-zA-Z_0-9]
5、数量表示:数量表示是对正则表达式的数量修饰
表达式?:该正则可以出现0次或1次
表达式*:该正则可以出现0次、1次或多次
表达式+:该正则可以出现1次或多次
表达式{n}:该正则的长度正好为n次
表达式{n,}:该正则的长度为n次及以上
表达式{n,m}:该正则的长度为n~m次,包含n、m
6、逻辑表达式:可以链接多个正则
表达式X表达式Y:X表达式之后紧跟上Y表达式
表达式X|表达式Y:有一个表达式满足即可
():为表达式设置一个整体描述,可以为整体描述设置数量单位
7、正则表达式前后缀:
^和$都没用:则其中存在就行
^:开头部分是否满足正则表达式
$:结尾部分是否满足正则表达式
^和$都用:开头结尾都要满足正则表达式
8、String类对正则的支持:
将指定字符串进行正则判断:str.matches(String regex)
替换全部:str.replaceAll(String regex, String replacement)
替换首个:str.replaceFirst(String regex, String replacement)
正则拆分:str.split(String regex)
正则拆分为指定个数:str.split(String regex, int limit)
9、java.util.regex包支持:一般用String的正则方法,但是此包中类有一个独有的分组-查询功能可能会用到
Pattern类提供有正则表达式的编译处理支持:
生成方法:Pattern pat = Pattern.compile(regex8);
Matcher类,实现了正则匹配的处理类
生成方法:Matcher mat = pat.matcher(str8);
寻找首次符合正则的部分(独有功能):mat.find()
输出当前mat存储的内容:mat.group(0)
部分代码练习如下:
public static void main(String[] args) {
// 【要验证的字符数量:单个】:验证是否为某字符的正则表达式
String str1 = "我1"; // 要验证的String
String regex1 = "我1"; // 正则表达式
System.out.println(str1.matches(regex1));
// 【要验证的字符数量:单个】:验证是否在某集合的正则表达式
String str2 = "x";
String regex2 = "[a-zA-Z]";
System.out.println(str2.matches(regex2));
// 【要验证的字符数量:单个字符】:简化字符集
String str3 = "x\n";
String regex3 = "\\D\\s";
System.out.println(str3.matches(regex3));
// 数量表示:数量表示是对正则表达式的数量修饰
String str4 = "abc ";
String regex4 = "\\w{2,3}\\s";
System.out.println(str4.matches(regex4));
// String类对正则的支持
String str5 = "jfiejfIEF(#(#*%(U(JFIEhth39t9924jtigg";
String regex5 = "[^a-zA-Z0-9]+";
// 替换输出
System.out.println(str5.replaceAll(regex5,""));
// 拆分输出
String result[] = str5.split(regex5);
for(int x = 0; x < result.length; x++) {
System.out.println(result[x]);
}
// 正则验证
String str6 = "100.00";
String regex6 = "\\d+(\\.\\d+)?";
System.out.println(str6.matches(regex6));
// 验证email格式:
// email用户名可以由数字、字母、_组成(不用下划线开头)
// email域名可以由字母、数字、_、所组成
// 域名的后缀必须是:.cn、.com、.net、.com.cn、.gov
String str7 = "h2u4hhu245h@mldn.cn";
String regex7 = "[a-zA-Z0-9]\\w+@\\w+\\.(cn|com.cn|net|gov)";
System.out.println(str7.matches(regex7));
// java.util.regex包支持:此包中类有一个独有的功能-查询功能可能会用到
// 提取String中的值
String str8 = "INSERT INTO dept(deptno,dname,loc) VALUES (#{dep123_tno},#{dname},#{loc})";
String regex8 = "#\\{\\w+\\}";
Pattern pat = Pattern.compile(regex8);
Matcher mat = pat.matcher(str8);
while (mat.find()) {
System.out.println(mat.group(0).replaceAll("#|\\{|\\}",""));
}
// HTML拆分
String str9 = "<font face=\"Arial,Serif\" size=\"+2\" color=\"red\">";
String regex9 = "\\w+=\"[a-zA-Z0-9,\\+]\"";
Matcher matcher = Pattern.compile(regex9).matcher(str9);
while (matcher.find()) {
String result2 = matcher.group(0);
System.out.println(result2);
}
}
本文详细介绍正则表达式的应用场景及语法,包括基本符号、数量限定、逻辑组合、前后缀匹配等内容,并通过实例演示如何利用Java内置方法进行字符串验证、替换及拆分。





