广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java使用正则表达式进行匹配且对匹配结果逐个替换
  • 462
分享到

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

2024-04-02 19:04:59 462人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

前言: Java使用正则表达式进行匹配,并对匹配结果逐个进行替换 下面代码示例,是将 下划线 替换成随机生成的 uuid public class Te

前言:

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正则表达式匹配内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

本文链接: https://www.lsjlt.com/news/168255.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作