Java中如何通过正则表达式逐个匹配并替换文本内容?

2026-05-24 04:173阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1160个文字,预计阅读时间需要5分钟。

Java中如何通过正则表达式逐个匹配并替换文本内容?

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

javapublic class TestUtil { public static void main(String[] args) { // 待匹配替换的文本 String text=以下代码示例,是将以下划线部分替换成随机生成的uuid;

// 正则表达式匹配待替换的文本 String regex=\\+\\s*以下划线部分\\+\\s*替换\\s*成\\s*随机\\s*生成\\s*的\\s*uuid\\+\\s*;

// 替换文本 String replacedText=text.replaceAll(regex, + + generateUUID() + +);

// 输出替换后的文本 System.out.println(replacedText); }

// 生成随机UUID的方法 public static String generateUUID() { return java.util.UUID.randomUUID().toString(); }}

前言:

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

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

Java中如何通过正则表达式逐个匹配并替换文本内容?

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

本文共计1160个文字,预计阅读时间需要5分钟。

Java中如何通过正则表达式逐个匹配并替换文本内容?

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

javapublic class TestUtil { public static void main(String[] args) { // 待匹配替换的文本 String text=以下代码示例,是将以下划线部分替换成随机生成的uuid;

// 正则表达式匹配待替换的文本 String regex=\\+\\s*以下划线部分\\+\\s*替换\\s*成\\s*随机\\s*生成\\s*的\\s*uuid\\+\\s*;

// 替换文本 String replacedText=text.replaceAll(regex, + + generateUUID() + +);

// 输出替换后的文本 System.out.println(replacedText); }

// 生成随机UUID的方法 public static String generateUUID() { return java.util.UUID.randomUUID().toString(); }}

前言:

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

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

Java中如何通过正则表达式逐个匹配并替换文本内容?

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