Java使用正则表达式进行匹配且对匹配结果逐个替换

 更新时间:2022年09月23日 09:38:40   作者:_灯火阑珊处​​​​​​​  
这篇文章主要介绍了Java使用正则表达式进行匹配且对匹配结果逐个替换,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下

前言:

Java使用正则表达式进行匹配,并对匹配结果逐个进行替换

下面代码示例,是将 下划线 替换成随机生成的 uuid

public class TestUtil {

    public static void main(String[] args) {
        // 待匹配替换文本
        String html = "姓名:______;年龄:______;性别:______;";
        // 正则表达式
        String regex = "_+";
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(html);
        StringBuffer stringBuffer = new StringBuffer();
        // 将html中的下划线替换为该input标签
        while (matcher.find()) {
            // 匹配区间
            String substring = html.substring(matcher.start(), matcher.end());
            // 生成随机id,作为唯一标识
            String uuid = IdUtil.simpleUUID();
            // 将下划线替换为uuid
            matcher.appendReplacement(stringBuffer, matcher.group().replace(substring, uuid));
        }
        // 最终结果追加到尾部
        matcher.appendTail(stringBuffer);
        // 最终完成替换后的结果
        System.out.println(stringBuffer);
    }

}

输出结果:

姓名:9b1abd66584940d0afa88d2a4f396cc0;
年龄:550161321a634b1abcd88c77e67f685a;
性别:d7714c1870bb44b8b5a7c61f35ed190e;

匹配模式 
Pattern.CANON_EQ启用规范等价。指定此标志后,当且仅当其完整规范分解匹配时,两个字符才可视为匹配
Pattern.CASE_INSENSITIVE启用不区分大小写的匹配
Pattern.COMMENTS模式中允许空白和注释。 此模式将忽略空白和在结束行之前以 # 开头的嵌入式注释。 通过嵌入式标志表达式 (?x) 也可以启用注释模式
Pattern.DOTALL启用点阵模式。在 dotall 模式下,表达式 . 匹配任何字符,包括行终止符。默认情况下, 此表达式与行终止符不匹配。Dotall 模式也可以通过嵌入式标志表达式启用(?s)。(s 是“单行”模式的助记符,这在 Perl 中也被使用)。
Pattern.LITERAL启用模式的文字解析。当指定此标志时,指定模式的输入字符串将被视为文字字符序列。输入序列中的元字符或转义序列将没有特殊意义。当与此标志一起使用时,标志 CASE_INSENSITIVE 和 UNICODE_CASE 保留对匹配的影响。其他旗帜变得多余。没有嵌入的标志字符用于启用文字解析。
Pattern.MULTILINE启用多行模式。在多行模式中,表达式^和$匹配恰好在之前或之前分别是行终止符或输入序列的结尾。 默认情况下,这些表达式仅在整个输入序列的开头和结尾匹配。也可以通过嵌入式标志表达式启用多模式模式(?m)。
Pattern.UNICODE_CASE启用 Unicode 感知的大小写折叠。当指定此标志时,不区分大小写的匹配(由 CASE_INSENSITIVE 标志启用)以与 Unicode 标准一致的方式完成。 默认情况下,不区分大小写的匹配假定仅匹配 US-ASCII 字符集中的字符。Unicode 感知案例折叠也可以通过嵌入式标志表达式启用(?u)。 指定此标志可能会造成性能损失。
Pattern.UNIX_LINES启用 UNIX 线路模式。在这种模式下,只有'\n' 行结束在行为的认可.,^ 和 $。 UNIX 线路模式也可以通过嵌入式标志表达式启用(?d)。
Matcher方法 
appendReplacement()追加和替换,将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个 StringBuffer 对象里
appendTail()将最后一次匹配工作后剩余的字符串添加到一个 StringBuffer 对象里

到此这篇关于Java使用正则表达式进行匹配且对匹配结果逐个替换的文章就介绍到这了,更多相关Java正则表达式匹配内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Java 压缩文件打包tar.gz 包的详细教程

    使用Java 压缩文件打包tar.gz 包的详细教程

    本文带领大家学习如何使用Java 压缩文件打包tar.gz 包,主要通过 Apache compress 工具打包,通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • 基于springboot activiti 配置项解析

    基于springboot activiti 配置项解析

    这篇文章主要介绍了springboot activiti 配置项解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Spring MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式)

    Spring MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式)

    本篇文章主要介绍了Spring MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • 在Java中按值调用和按引用调用

    在Java中按值调用和按引用调用

    这篇文章主要介绍了Java中的按值调用和按引用调用,一种是按值调用,另一种是按引用调用,这两种方式通常根据作为输入或参数传递给它们的值的类型来区分,下文相关的更多详细资料感兴趣的小伙伴可以参考一下
    2022-04-04
  • 浅谈Java中向上造型向下造型和接口回调中的问题

    浅谈Java中向上造型向下造型和接口回调中的问题

    这篇文章主要介绍了浅谈Java中向上造型向下造型和接口回调中的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java设计模式—观察者模式详解

    Java设计模式—观察者模式详解

    这篇文章主要介绍了Java设计模式—观察者模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Spring和SpringBoot比较及区别解惑

    Spring和SpringBoot比较及区别解惑

    这篇文章主要介绍了Spring和SpringBoot比较解惑区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Java 提取照片的EXIF信息批量重命名

    Java 提取照片的EXIF信息批量重命名

    这篇文章主要介绍了Java 提取照片的EXIF信息批量重命名的方法,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-04-04
  • JavaWeb Listener 利用Session统计在线人数

    JavaWeb Listener 利用Session统计在线人数

    这篇文章主要为大家介绍了JavaWeb Listener 利用Session统计在线人数,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Java并发工具类Phaser详解

    Java并发工具类Phaser详解

    这篇文章主要介绍了Java并发工具类Phaser详解,Phaser(阶段协同器)是一个Java实现的并发工具类,用于协调多个线程的执行,它提供了一些方便的方法来管理多个阶段的执行,可以让程序员灵活地控制线程的执行顺序和阶段性的执行,需要的朋友可以参考下
    2023-11-11

最新评论