我想做以下事情:
转换
“{{ interface_ID }} 那里应该{{interface_ID}}LD BE CODE HERE:{{interface_ID}}”
到
“{{interface_ID}} 那里应该{{interface_ID}}LD BE CODE HERE: {{interface_ID}}”
我尝试了以下代码,但没有得到正确的结果
Pattern CURLY_BRACKETS_PLACEHOLDER = Pattern.compile("\\{\\{(.*?)\\}\\}");
Matcher m = CURLY_BRACKETS_PLACEHOLDER.matcher(htmlString);
if(m.find()) {
for (int i = 1; i <= m.groupCount(); i++) {
String script = m.group(i);
String scriptWithPlaceholder = "{{"+script+"}}";
String replacementToken = "{"+ ZERO_WIDTH_SPACE_CHARACTER +"{"+script+"}}";
htmlString = htmlString.replace(scriptWithPlaceholder, replacementToken);
}
}
return htmlString;
请告诉我如何实现这一目标
答案 0 :(得分:1)
看看您尝试过的模式,您可以对第一个卷曲之后的部分使用捕获组进行匹配。
\{(\{.*?}})
并替换为
{​$1
看到一个 regex demo 和一个 Java demo
示例代码
String regex = "\\{(\\{.*?\\}\\})";
String string = "{{ interface_ID }} THERE SHOU{{interface_ID}}LD BE CODE HERE: {{interface_ID}}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
System.out.println(matcher.replaceAll("{​$1"));
输出
{​{ interface_ID }} THERE SHOU{​{interface_ID}}LD BE CODE HERE: {​{interface_ID}}
答案 1 :(得分:0)
Pattern CURLY_BRACKETS_PLACEHOLDER = Pattern.compile("\\{\\{(.*?)\\}\\}");
Matcher m = CURLY_BRACKETS_PLACEHOLDER.matcher(htmlString);
while(m.find()) {
String script = m.group(1);
String scriptWithPlaceholder = "{{"+script+"}}";
String replacementToken = "{"+ ZERO_WIDTH_SPACE_CHARACTER +"{"+script+"}}";
htmlString = htmlString.replace(scriptWithPlaceholder, replacementToken);
}
return htmlString;