JAVA Android 正则表达式

正则表达式

正则表达式是对字符串执行模式匹配的技术。

正则表达式匹配流程

    private void RegTheory() {
        // 正则表达式
        String content = "1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台(简称为Java2) " +
                "的3个版本: J2ME (Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境: J2SE (Java  " +
                "Standard Edition,Java 2平台的标准版),应用于桌面环境:2EE (Java 2Enterprise Edition,Java " +
                "2平台的企业版) ,应用3443于基于Java的应用服务器。Java 2平台的发布,是Java发展过程中最重要的一个里程碑,标志着Java的应用开始普及9889";
        // 目标 匹配所有数组的字符串
        // 1、 \\d表示一个任意的数字
        String regStr = "\\d\\d\\d\\d";
        // 2、创建模式对象
        Pattern pattern = Pattern.compile(regStr);
        // 3、创建匹配器
        // 说明,创建匹配器,按照正则表达式的规则去匹配
        Matcher matcher = pattern.matcher(content);

        while (matcher.find()){
            Log.i(TAG,"找到:" + matcher.group(0));
        }
    }
2023-08-08 16:09:28.168 29172-29172/cn.jj.reg I/JJWorld.MainActivity: 找到:1998
2023-08-08 16:09:28.168 29172-29172/cn.jj.reg I/JJWorld.MainActivity: 找到:1999
2023-08-08 16:09:28.168 29172-29172/cn.jj.reg I/JJWorld.MainActivity: 找到:3443
2023-08-08 16:09:28.168 29172-29172/cn.jj.reg I/JJWorld.MainActivity: 找到:9889
private void RegTheory() {
        // 正则表达式
        String content = "1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台(简称为Java2) " +
                "的3个版本: J2ME (Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境: J2SE (Java  " +
                "Standard Edition,Java 2平台的标准版),应用于桌面环境:2EE (Java 2Enterprise Edition,Java " +
                "2平台的企业版) ,应用3443于基于Java的应用服务器。Java 2平台的发布,是Java发展过程中最重要的一个里程碑,标志着Java的应用开始普及9889";
        // 目标 匹配所有数组的字符串
        // 1、 \\d表示一个任意的数字
        String regStr = "(\\d\\d)(\\d\\d)";
        // 2、创建模式对象
        Pattern pattern = Pattern.compile(regStr);
        // 3、创建匹配器
        // 说明,创建匹配器,按照正则表达式的规则去匹配
        Matcher matcher = pattern.matcher(content);

        /**
         * matcher.find()
         * 1、根据指定的规则,定位满足规则的子字符串(比如1998)
         * 2、找到后,将 子字符串的开始的索引记录到 matcher对象的属性 int[] groups[0] = 0
         *      把该子字符串的结束的索引+1的值记录到 groups[1] = 4
         *
         * 3、如果再次指向 find方法。仍然安上面分析来执行
         *
         * matcher.find()  考虑分组
         * // 正则表达式中,包括小括号则表示分组
         * 第一个小括号表示第一组 第二个小括号表示第二组  (\d\d)(\d\d)
         *
         * 1、根据指定的规则,定位满足规则的子字符串(比如1998)
         * 2、找到后,将 子字符串的开始的索引记录到 matcher对象的属性 int[] groups;
         *      2.1 groups[0] = 0 ,把该子字符的结束的索引+1的值记录到 groups[1] = 4
         *      2.2 记录1组()匹配到的字符串 groups[2] = 0 groups[3] = 2
         *      2.3 记录2组()匹配到的字符串 groups[4] = 2 groups[5] = 4
         *      2.4 如果有更多的分组,依次类推
         *
         * 3、如果再次指向 find方法。仍然安上面分析来执行
         */
        while (matcher.find()){
            Log.i(TAG,"找到:" + matcher.group(0));
        }
    }

正则表达式语法

如果要想灵活的运用正则表达式,必须了解其中各种元字符的功能,元字符从功能上大致分为:

1、限定符
2、选择匹配符
3、分组组合和反向引用符
4、特殊字符
5、字符匹配符
6、定位符

转义符说明

元字符(Metacharacter)-转义号 \\
符号说明:
在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错的。
案例: 用 去匹配会怎样 ? " a b c 去匹配会怎样 ?" abc 去匹配会怎样?"abc("
用( 去匹配 “abc$(”会怎样 ?
在这里插入图片描述

    private void RegTest2() {
        String content ="abc$(abc(1.23(";
        //匹配(
//        String regStr = "\\(";
        String regStr = "\\.";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()){
            Log.i(TAG,"match:" + matcher.group(0));
        }
    }

元字符-字符匹配符

JAVA Android 正则表达式_第1张图片
JAVA Android 正则表达式_第2张图片

?表示0或者1
{3}表示三个数字
+代表1到多个

你可能感兴趣的:(android,java,java,android,正则表达式)