文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

前言:

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯