gpt4 book ai didi

Java用不同的值替换捕获组

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:08 24 4
gpt4 key购买 nike

在 java 中,我只想用其他值替换匹配部分中的捕获组,要替换的值取决于捕获组。

例如:

String str = "fname:hello hello:world ffff:off";
Map<String, String> mapping = new HashMap<String, String>();
dat.put("fname", "meme");
dat.put("hello", "below");
dat.put("ffff", "ssss");
Pattern pat = Pattern.compile("([a-zA-Z_]+):");

在上面的代码中,我想用在“映射”中找到的相应映射替换模式“pat”的捕获组部分。即替换后,“str”字符串应转换为“meme:hello below:world ssss:off”我怎样才能做到这一点?感谢您的帮助。

最佳答案

请考虑为 Stack Overflow Regular Expressions FAQ 添加书签备查。那里有一堆特定于 Java 的信息,特别是在“ flavor 特定信息”部分。


这个有效:

import  java.util.Map;
import java.util.HashMap;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Replacement {
public static final void main(String[] ignored) {

String str = "fname:hello hello:world ffff:off";
Map<String, String> mapping = new HashMap<String, String>();
mapping.put("fname", "meme");
mapping.put("hello", "below");
mapping.put("ffff", "ssss");
Pattern pat = Pattern.compile("([a-zA-Z_]+):");

Matcher m = pat.matcher(str);


StringBuffer sb = new StringBuffer();
while(m.find()) {
String rplcWith = mapping.get(m.group(1));
m.appendReplacement(sb, rplcWith + ":");
}
m.appendTail(sb);

System.out.println(sb);
}
}

输出:

[C:\java_code\]java Replacement
meme:hello below:world ssss:off

关于Java用不同的值替换捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23098542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com