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

Lil*_*ily 24 java regex

我有一个字符串:

HLN (Formerly Headline News)
Run Code Online (Sandbox Code Playgroud)

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

HLN
Run Code Online (Sandbox Code Playgroud)

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

"(.+?)"
Run Code Online (Sandbox Code Playgroud)

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

jjn*_*guy 45

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

例如:

"\\(.+?\\)"
Run Code Online (Sandbox Code Playgroud)

  • 他可能想要.+?如果可能有几个括号. (3认同)
  • Wups,她. (2认同)

And*_*dis 11

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

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

普通正则表达式:

\([^\(]*\)

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

我的代码基于以前的答案


iam*_*ael 8

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

\([^)]*\)
Run Code Online (Sandbox Code Playgroud)

\(上一个左括号匹配,则[^)]*任何数量比右括号其它字符,并且匹配\)上一个右括号匹配.

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

String regex = "\\([^)]*\\)";
Run Code Online (Sandbox Code Playgroud)