如何使用正则表达式替换括号中的字符串?

时间:2009-07-16 15:49:35

标签: java regex

我有一个字符串:

HLN (Formerly Headline News)

我想删除parens和parens中的所有内容,只留下:

HLN

我试图用正则表达式做到这一点,但我的困难在于这种模式:

"(.+?)"

当我使用它时,它总是给我一个PatternSyntaxException。我该如何修复我的正则表达式?

4 个答案:

答案 0 :(得分:44)

因为括号是regexp中的特殊字符,所以您需要将它们转义为显式匹配它们。

例如:

"\\(.+?\\)"

答案 1 :(得分:11)

String foo = "(x)()foo(x)()";
String cleanFoo = foo.replaceAll("\\([^\\(]*\\)", "");
// cleanFoo value will be "foo"

上面从字符串的任一侧删除空和非空括号。

普通正则表达式:

\([^\(]*\)

您可以在此处测试:http://www.regexplanet.com/simple/index.html

我的代码基于之前的答案

答案 2 :(得分:8)

您可以使用以下正则表达式查找括号:

\([^)]*\)

左括号中的\(匹配,[^)]*匹配除右括号之外的任意数量的字符,而\)匹配右括号。

如果您将其包含在java字符串中,则必须转义\个字符,如下所示:

String regex = "\\([^)]*\\)";

答案 3 :(得分:3)

String foo = "bar (baz)";
String boz = foo.replaceAll("\\(.+\\)", ""); // or replaceFirst

boz现在是"bar "