我输入了"\\{\\{\\{testing}}}"
之类的字符串,我想删除所有"\"
。要求o / p:"{{{testing}}}"
。
我正在使用以下代码来完成此任务。
protected String removeEscapeChars(String regex, String remainingValue) {
Matcher matcher = Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(remainingValue);
while (matcher.find()) {
String before = remainingValue.substring(0, matcher.start());
String after = remainingValue.substring(matcher.start() + 1);
remainingValue = (before + after);
}
return remainingValue;
}
我正在将正则表达式作为"\\\\{.*?\\\\}"
传递。
代码仅在第一次出现" \ {"但并非所有事件都发生。 查看不同输入的以下输出。
"\\{testing}"
- o / p:"{testing}"
"\\{\\{testing}}"
- o / p:"{\\{testing}}"
"\\{\\{\\{testing}}}"
- o / p:"{\\{\\{testing}}}"
我希望"\"
应从传递的i / p字符串中删除,并且所有"\\{"
都应替换为"{"
。
我觉得问题在于正则表达式值,即"\\\\{.*?\\\\}"
。
任何人都可以让我知道应该获得所需的正则表达式值o / p。
答案 0 :(得分:11)
您不仅仅使用String#replace
?
String noSlashes = input.replace("\\", "");
或者,如果您只需要在打开花括号之前删除反斜杠:
String noSlashes = input.replace("\\{", "{");
答案 1 :(得分:2)
它应该如下所示:
String result = remainingValue.replace("\\", "");
答案 2 :(得分:1)
如前所述,如果你只想删除\
之前的斜杠{
,最好的方法就是使用
String noSlashes = input.replace("\\{", "{");
但是在你的问题中,你问过任何人都可以告诉我应该是什么样的正则表达式值。如果您使用的是正则表达式,因为您希望不仅在\
之前删除{
,而只在之后使用{
正确关闭的那些}
中删除{{1}},那么答案是:不。 You can't match nested {}
with regex.
答案 3 :(得分:0)
更改RegEx:"\\&([^;]{6})"
private String removeEscapeChars(String remainingValue) {
Matcher matcher = Pattern.compile("\\&([^;]{6})", Pattern.CASE_INSENSITIVE).matcher(remainingValue);
while (matcher.find()) {
String before = remainingValue.substring(0, matcher.start());
String after = remainingValue.substring(matcher.start() + 1);
remainingValue = (before + after);
}
return remainingValue;
}
应该有效..