Java - 正则表达式,用于删除括号中的内容,只要它包含特定字符串即可

时间:2013-09-15 15:57:33

标签: java regex

我有一句话:

String sentence = "FirstName LastName (pronounced as: X) (born 1 June 1900)";

我需要正则表达式,只要括号内的文字包含单词:发音,就会删除括号(包括括号)之间的所有内容。

生成如下输出:

"FirstName LastName (born 1 June 1900)"

请让我知道...谢谢。

4 个答案:

答案 0 :(得分:2)

您可以尝试以下正则表达式:

(?=\\([^()]*?pronounced)\\([^)]+\\)

一个空的替换字符串。

Java代码:

String input = "FirstName LastName (pronounced as: X) (born 1 June 1900)";
String result = input.replaceAll("(?=\\([^()]*?pronounced)\\([^)]+\\)", "");

答案 1 :(得分:1)

这样的模式应该有效:

\((?=[^)]*pronounced)[^)]+\)

这将匹配文字(,后跟一个或多个)以外的字符,后跟文字),但仅限于文字pronounced

不要忘记转义Java字符串文字中的\

output = input.replaceAll("\\((?=[^)]*pronounced)[^)]+\\)", "");

答案 2 :(得分:1)

不需要前瞻,否定的char类可以完成这项工作:

/\([^)]*pronounced[^)]*\)/

答案 3 :(得分:0)

input.replaceAll("\\((?=[^()]*pronounced).*?\\)","");