我有以下一句话:
String sentence = "FirstName LastName (pronounced as: X) (born 1 June 1900)";
我需要正则表达式,只要括号之间的文本包含单词:发音,它就会删除括号(包括括号)之间的所有内容。
产生这样的输出:
"FirstName LastName (born 1 June 1900)"
请让我知道如何...谢谢。
您可以尝试以下正则表达式:
(?=\\([^()]*?pronounced)\\([^)]+\\)
和一个空的替换字符串。
Java代码:
String input = "FirstName LastName (pronounced as: X) (born 1 June 1900)";
String result = input.replaceAll("(?=\\([^()]*?pronounced)\\([^)]+\\)", "");
像这样的模式应该有效:
\((?=[^)]*pronounced)[^)]+\)
这将匹配(
后跟一个或多个字符而不是)
后跟文字的文字)
,但仅当它还包含文字时pronounced
。
不要忘记\
在 Java 字符串文字中转义:
output = input.replaceAll("\\((?=[^)]*pronounced)[^)]+\\)", "");
无需前瞻,否定的 char 类就可以完成这项工作:
/\([^)]*pronounced[^)]*\)/
input.replaceAll("\\((?=[^()]*pronounced).*?\\)","");