我有一句话:
String sentence = "FirstName LastName (pronounced as: X) (born 1 June 1900)";
我需要正则表达式,只要括号内的文字包含单词:发音,就会删除括号(包括括号)之间的所有内容。
生成如下输出:
"FirstName LastName (born 1 June 1900)"
请让我知道...谢谢。
答案 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).*?\\)","");