如何使用正则表达式替换括号中的字符串?
我有一个字符串:
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 "