JAVA Android 正则表达式

这篇具有很好参考价值的文章主要介绍了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$(”会怎样 ?
JAVA Android 正则表达式,android,java,java,android,正则表达式

    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 正则表达式,android,java,java,android,正则表达式
JAVA Android 正则表达式,android,java,java,android,正则表达式

更正:\\w 匹配单个数字、大小写字母字符以及下划线_ 相当于[0-9a-zA-Z_]
?表示0或者1
{3}表示三个数字
+代表1到多个
\\s 匹配任何空白字符(空格,制表符等
\\S 匹配任何非空字符
. 匹配出\n 之外的所有字符,如果要匹配。本身则需要使用\\.。

限定符

JAVA Android 正则表达式,android,java,java,android,正则表达式
JAVA Android 正则表达式,android,java,java,android,正则表达式

private void regSMatching(){
        String content = "1111222 z_*@ hello jj 曙光";
        String regStr = "\\d{3,4}"; // 匹配任何非空字符
        Pattern pattern = Pattern.compile(regStr,Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()){
            Log.i(TAG,"matcher:" + matcher.group(0));
        }
    }

java匹配时贪婪匹配,默认匹配多的。

2023-08-16 20:45:38.948 9275-10989/cn.jj.reg I/JJWorld.MainActivity: matcher:1111
2023-08-16 20:45:38.948 9275-10989/cn.jj.reg I/JJWorld.MainActivity: matcher:222

不区分大小写

修改字符串

(?i) 表示不区分大小写 示例:String regStr = “(?i)abc”;

修改生成Pattern规则

Pattern pattern = Pattern.compile(regStr,Pattern.CASE_INSENSITIVE);

定位符

JAVA Android 正则表达式,android,java,java,android,正则表达式

\- 表示需要有-

    public static void regT(){
        String content = "abc123-abc123";
//        String regStr = "[0-9]+[a-z]*";
        String regStr = "[0-9]+\\-[a-z]+";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()){
            Log.i(TAG,"reg:" + matcher.group(0));
        }
    }
2023-08-17 20:01:29.666 26962-27135/cn.jj.reg I/JJWorld.MainActivity: reg:123-abc
    public static void regT(){
        String content = "abc123aabcdabcd 123 abcd assa";
//        String regStr = "[0-9]+[a-z]*";
//        String regStr = "[0-9]+\\-[a-z]+";
        String regStr = "abc\\B";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()){
            Log.i(TAG,"reg:" + matcher.group(0));
        }
    }
2023-08-17 20:14:10.771 29568-29740/cn.jj.reg I/JJWorld.MainActivity: reg:abc
2023-08-17 20:14:10.771 29568-29740/cn.jj.reg I/JJWorld.MainActivity: reg:abc
2023-08-17 20:14:10.771 29568-29740/cn.jj.reg I/JJWorld.MainActivity: reg:abc
2023-08-17 20:14:10.771 29568-29740/cn.jj.reg I/JJWorld.MainActivity: reg:abc

\s

\s是一个特殊的转义字符,表示匹配任意的空白字符,包括空格、制表符、换行符等。

分组 重要

JAVA Android 正则表达式,android,java,java,android,正则表达式文章来源地址https://www.toymoban.com/news/detail-643551.html

    public void regGroup(){
        String content = "hanshunping s7789 nn1189han";
        String regStr = "(?<g1>\\d\\d)(?<g2>\\d\\d)";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()){
            Log.i(TAG,"reg:" + matcher.group(0) + "-" + matcher.group(1) + "-" + matcher.group(2) + " g1 " + matcher.group("g1"));
        }
    }
2023-08-17 20:44:46.911 31878-32267/cn.jj.reg I/JJWorld.MainActivity: reg:7789-77-89 g1 77
2023-08-17 20:44:46.911 31878-32267/cn.jj.reg I/JJWorld.MainActivity: reg:1189-11-89 g1 11

到了这里,关于JAVA Android 正则表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正则表达式(Java)

    正则表达式是由一些特定的字符组成,代表一个规则,可以用来检验数据格式是否合法,也可以在一段文本中查找满足要求的内容。 如果使用代码检验数据是否正确: 使用正则表达式: String提供了一个匹配正则表达式的方法:  图片来源heimait \\\\d才会当成d使用 (?i)表示忽略大

    2024年02月20日
    浏览(55)
  • Java正则表达式

    正则表达式 能够理解正则表达式的作用 能够使用正则表达式的字符类 能够使用正则表达式的逻辑运算符 能够使用正则表达式的预定义字符类 能够使用正则表达式的限定符 能够使用正则表达式的分组 能够在String的split方法中使用正则表达式 在Java中,我们经常需要验证一些

    2024年01月19日
    浏览(46)
  • Android kotlin高阶函数与Java lambda表达式介绍与实战

            目前在Java JDK版本的不断升高,新的表达式已开始出现,但是在Android混淆开发中,kotlin的语言与Java的语言是紧密贴合的。所以Java lambda表达式在kotlin中以新的身份出现:高阶函数与lambda表达式特别类似。接下来我讲会先讲Java的lambda,再介绍kotlin的高阶函数。 2.1

    2024年02月15日
    浏览(50)
  • Java038——正则表达式

    正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,“d”表示数字 0~9 中的任何一个,“d”就是元字符。正则表达式中的元字符及其意义下所示。 在

    2024年02月13日
    浏览(45)
  • Java 正则表达式匹配

    正则表达式: 定义一个搜索模式的字符串。 正则表达式可以用于搜索、编辑和操作文本。 正则对文本的分析或修改过程为:首先正则表达式应用的是文本字符串(text/string),它会以定义的模式从左到右匹配文本,每个源字符只匹配一次。 正则表达式 匹配 this is text 精确匹配

    2024年02月06日
    浏览(63)
  • JAVA系列---正则表达式

    编号 元字符 匹配功能 1 . 匹配除换⾏符以外的任意字符 2 w 匹配字⺟或数字或下划线 3 s 匹配任意的空⽩符 4 d 匹配数字 5 n 匹配⼀个换⾏符 6 t 匹配⼀个制表符 7 ^ 匹配字符串的开始 8 $ 匹配字符串的结尾 9 W 匹配⾮字⺟或数字或下划线 10 D 匹配⾮数字 11 S 匹配⾮空⽩符

    2024年02月15日
    浏览(62)
  • JAVA中正则表达式

    接下来,学习一个全新的知识,叫做正则表达式。 正则表达式其实是由一些特殊的符号组成的,它代表的是某种规则。 正则表达式的作用1:用来校验字符串数据是否合法 正则表达式的作用2:可以从一段文本中查找满足要求的内容 5.1 正则表达式初体验 现在,我们就以QQ号码

    2024年01月20日
    浏览(51)
  • Java的正则表达式

    正则表达式是一种强大的字符串匹配工具,可以在很多领域得到广泛使用。在Java中,正则表达式也被广泛应用于字符串匹配、查找和替换等方面。本文将介绍Java中常用的正则表达式语法以及其使用方法,供大家参考。 Java中使用正则表达式需要使用java.util.regex包中的类。其中

    2024年02月07日
    浏览(54)
  • 【Java 基础篇】Java 正则表达式

    正则表达式是一种强大的文本模式匹配工具,它可以帮助我们在文本中查找、替换和提取特定模式的内容。Java 提供了丰富的正则表达式支持,通过 java.util.regex 包中的类和方法,我们可以在 Java 程序中使用正则表达式进行字符串处理。 本篇博客将介绍 Java 正则表达式的基本

    2024年02月09日
    浏览(56)
  • 【JAVA】正则表达式是啥?

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”),可以通过正则表达式,从字符串中获取我们想要的特定部分。今天我们要介绍的就是 正则表达式 。 正则表达式是对字符串(包括普通

    2024年02月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包