匹配除第一个和最后一个之外的两个字符

时间:2018-04-03 21:42:37

标签: java regex string

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

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

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

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

我需要它:

[foo:foo, foo2, bar:bar]

我试过了,但正则表达式匹配[之前的字符:

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

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

总结一下,非常感谢@thanopi57首先实施我在评论中建议的内容: 蛮力,没有正则表达式解决方案

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

答案 1 :(得分:0)

可以试试这个:

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

(?<!])]是一个负面的后瞻性,]字符前面没有另一个]

(?<=:)\[是一个积极的后视,[字符前面有: