用正则表达式替换Java中的大括号{}之间的所有文本

Jis*_*r13 4 java regex string

我有一个很长的字符串,在{}之间有很多文本出现我想删除但是当我这样做时:

data = data.replaceAll("{(.*?)}", "");
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,所以我做错了什么/我应该怎么做呢?

rob*_*ock 9

这将替换大括号之间的所有文本并保留括号这是使用正面向前看和正面看后面完成的

data = data.replaceAll("(?<=\\{).*?(?=\\})", "");
Run Code Online (Sandbox Code Playgroud)

"if(true){calc();}"变为"if(true){}"

这将替换大括号之间的所有文本并删除括号

data = data.replaceAll("\\{.*?\\}", "");
Run Code Online (Sandbox Code Playgroud)

"if(true){calc();}"成为"if(true)"

这将替换大括号之间的所有文本,包括新行.

data = Pattern.compile("(?<=\\{).*?(?=\\})", Pattern.DOTALL).matcher(data).replaceAll("");
Run Code Online (Sandbox Code Playgroud)

"if(true){\n\t\t\t\tcalc(); \n}"变为"if(true){}"


Roh*_*ain 5

你需要逃避开括号,因为它表示量词的开始 - {n}在正则表达式中.而且您并不真正需要捕获组,因此请将其删除.

data = data.replaceAll("\\{.*?}", "");
Run Code Online (Sandbox Code Playgroud)