使用正则表达式删除括号中的所有内容

Dan*_*iel 9 java regex

我已经使用以下正则表达式尝试在一个名为的字符串中删除括号及其中的所有内容name.

name.replaceAll("\\(.*\\)", "");
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这是保持名称不变.我究竟做错了什么?

Tik*_*vis 23

字符串是不可变的.你必须这样做:

name = name.replaceAll("\\(.*\\)", "");
Run Code Online (Sandbox Code Playgroud)

编辑:此外,由于它.*是贪婪的,它会尽可能多地杀死它.所以"(abc)something(def)"将变成"".


Pas*_*ius 9

正如Jelvis所提到的,".*"选择所有内容并将"(ab)ok(cd)"转换为""

下面的版本适用于这些情况"(ab)ok(cd)" - >"ok",通过选择除右括号以外的所有内容并删除空格.

test = test.replaceAll("\\s*\\([^\\)]*\\)\\s*", " ");
Run Code Online (Sandbox Code Playgroud)