Java 匹配两个字符,第一个和最后一个除外

Java 匹配两个字符,第一个和最后一个除外,java,regex,string,Java,Regex,String,我需要从字符串中删除所有[和]字符,第一个和最后一个实例除外 我在SO中寻找了许多解决方案,但无法解决这个具体问题 输入字符串可以采用以下格式: [foo:[foo,foo2],bar:[bar]] 我需要的是: [foo:foo,foo2,bar:bar] 我尝试了这个,但是正则表达式与[之前的字符匹配: ([^\[])(\[|\]) 提前感谢您的帮助!总结一下,非常感谢第一个实现我在评论中建议的人: 蛮力,没有正则表达式解决方案 String input = "[foo:[foo, foo

我需要从字符串中删除所有
[
]
字符,第一个和最后一个实例除外

我在SO中寻找了许多解决方案,但无法解决这个具体问题

输入字符串可以采用以下格式:

[foo:[foo,foo2],bar:[bar]]

我需要的是:

[foo:foo,foo2,bar:bar]

我尝试了这个,但是正则表达式与
[
之前的字符匹配:

([^\[])(\[|\])

提前感谢您的帮助!

总结一下,非常感谢第一个实现我在评论中建议的人: 蛮力,没有正则表达式解决方案

String input = "[foo:[foo, foo2], bar:[bar]]";
String newInput = new StringJoiner("").add("[").
       add(input.replaceAll("[\\[\\]]", "")).add("]").toString();
System.out.println(newInput);
你可以试试这个:

String str = "[foo:[foo, foo2], bar:[bar]]";
return str.replaceAll("(?<!])]", "").replaceAll("(?<=:)\\[", "");
String str=“[foo:[foo,foo2],bar:[bar]]”;

return str.replaceAll(“(?您必须只使用正则表达式执行此操作吗?您已经得到了字符串,为什么不删除其中的所有“[”和“]”,然后用“[”前缀和“]”重新生成新字符串呢“postfix?@RannLifshitz抱歉,我没有看到你的评论。是的,我想你的评论会给出答案。自由发布你的答案。如果你想避免删除字符串开头的
[
和结尾的
]
,你可以使用
.replaceAll((?@RannLifshitz)任何代码看起来都像是“随机字符混搭”给我妻子。这是一个你是否熟悉一项技术的问题。@thanopi57:我们有没有可能在这件事上分一杯羹?发表一个答案,我会投票表决。为什么不
input.replaceAll(“[\[\]]”),“)
?甚至使用stringBuilder来
stringBuilder.append('[');stringBuilder.append(input.replaceAll([\[\]]“,”);stringBuilder.append(“]”);
?这只是给作者的一条临时消息:请注意您建议的编辑。建议的编辑不应包含拼写错误。