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); } }