使用如下字符串:
3 SOME STRING (remove me) 6 SOME OTHER STRING (also remove me!) 8 THIRD STRING (and me)
目的是去掉括号中的任何内容,并将字符串变成:
3 SOME STRING 6 SOME OTHER STRING 8 THIRD STRING
到目前为止,我最大的努力是:
private String removeAnythingInParentheses(String input) {
return Pattern.compile("\(.*\)").matcher(input).replaceAll("").trim();
}
然而,这替换了太多的字符串并留给我(我想它将第一个括号与字符串中的最后一个括号匹配(:
3 SOME STRING
我确信可以使用模式和匹配器的一些漂亮功能,但我无法弄清楚它们......
正如评论所建议的那样。正确答案是:
private String removeAnythingInParentheses(String input) {
return Pattern.compile("\([^()]*\)").matcher(input).replaceAll("").trim();
}
我想简单使用带有修改正则表达式的String.replaceAll
会更容易看
input.replaceAll("\(.*?\)", "");
完整代码
String input = "3 SOME STRING (remove me) 6 SOME OTHER STRING (also remove me!) 8 THIRD STRING (and me)";
input = input.replaceAll("\(.*?\)", "");
System.out.println(input);
输出
3 一些字符串 6 一些其他字符串 8 第三根字符串