这就是你的Python建议转换为Java的方式:
Map replacements = new HashMap() {{
put("substr1", "repl1");
put("substr2", "repl2");
put("substr3", "repl3");
}};
String input = "lorem substr1 ipsum substr2 dolor substr3 amet";
// create the pattern joining the keys with '|'
String regexp = "substr1|substr2|substr3";
StringBuffer sb = new StringBuffer();
Pattern p = Pattern.compile(regexp);
Matcher m = p.matcher(input);
while (m.find())
m.appendReplacement(sb, replacements.get(m.group()));
m.appendTail(sb);
System.out.println(sb.toString()); // lorem repl1 ipsum repl2 dolor repl3 amet
这种方法可以同时进行(即“同时”)替换.即,如果你碰巧有
"a" -> "b"
"b" -> "c"
然后这种方法会给出“a b” – > “b c”与答案相反,表明你应该链接几个调用来替换或替换所有会给出“c c”的答案.
(如果您通过这种方法概括地以编程方式创建正则表达式,请确保Pattern.quote每个单独的搜索词和Matcher.quoteReplacement每个替换词.)