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

我有一个字符串:

HLN (Formerly Headline News) 

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

 HLN 

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

 "(.+?)" 

当我使用它时,它总是给我一个PatternSyntaxException 。 我怎样才能修复我的正则表达式?

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

例如:

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

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

普通正则表达式:

  \([^ \(] * \) 

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

我的代码基于以前的答案

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

 \([^)]*\) 

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

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

 String regex = "\\([^)]*\\)"; 
 String foo = "bar (baz)"; String boz = foo.replaceAll("\\(.+\\)", ""); // or replaceFirst 

boz现在是"bar "