-1

我有以下一句话:

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

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

产生这样的输出:

"FirstName LastName (born 1 June 1900)"

请让我知道如何...谢谢。

4

4 回答 4

2

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

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

和一个空的替换字符串。

Java代码:

String input = "FirstName LastName (pronounced as: X) (born 1 June 1900)";
String result = input.replaceAll("(?=\\([^()]*?pronounced)\\([^)]+\\)", "");
于 2013-09-15T16:00:17.010 回答
1

像这样的模式应该有效:

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

这将匹配(后跟一个或多个字符而不是)后跟文字的文字),但仅当它还包含文字时pronounced

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

output = input.replaceAll("\\((?=[^)]*pronounced)[^)]+\\)", "");
于 2013-09-15T16:00:33.790 回答
1

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

/\([^)]*pronounced[^)]*\)/
于 2013-09-15T16:20:08.193 回答
0
input.replaceAll("\\((?=[^()]*pronounced).*?\\)","");
于 2013-09-15T16:03:12.703 回答