Java使用正则表达式进行匹配且对匹配结果逐个替换
2022-09-23 10:11:29 来源:易采站长站 作者:
前言:Java使用正则表达式进行匹配,并对匹配结果逐个进行替换下面代码示例,是将下划线替换成随机生成的uuidpublicclassTestUtil{publicstaticvoid...
前言:
Java使用正则表达式进行匹配,并对匹配结果逐个进行替换
下面代码示例,是将 下划线 替换成随机生成的 uuid
public class TestUtil {
public static void main(String[] args) {
// 待匹配替换文本
String html = "姓名:______;年龄:______;性别:______;";
// 正则表达式
String regex = "_+";
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcherjavascript matcher = pattern.matcher(html);
StringBuffer stringBuffer = new StringBufferphp();
// 将html中的下划线替换为该input标签
while (matcher.f编程ind()) {
// 匹配区间
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;
. 匹配任何字符,包括行终止符。默认情况下, 此表达式与行终止符不匹配。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)。
到此这篇关于Java使用正则表达式进行匹配且对匹配结果逐个替换的文章就介绍到这了,更多相关Java正则表达式匹配内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
暂时禁止评论













闽公网安备 35020302000061号