关于正则表达式笔记全解总结及部分功能练习

本文详细介绍正则表达式的应用场景及语法,包括基本符号、数量限定、逻辑组合、前后缀匹配等内容,并通过实例演示如何利用Java内置方法进行字符串验证、替换及拆分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值