Java用排除替换所有正则表达式
我正在尝试替换所有句子终止符,例如“.”、“?”和“!”,但我不想替换像“dr.”和“mr.”这样的字符串 我尝试了以下方法:Java用排除替换所有正则表达式,java,regex,replaceall,Java,Regex,Replaceall,我正在尝试替换所有句子终止符,例如“.”、“?”和“!”,但我不想替换像“dr.”和“mr.”这样的字符串 我尝试了以下方法: text=text.replaceAll((?![mr | mrs | ms | dr])(\\s*[\\.\.\?\!]\\s*),“\n”) ……但这似乎不起作用。如有任何建议,将不胜感激。 编辑:经过这里的反馈和一点tweeking,这是我问题的有效解决方案 private String convertText(String text) { text = t
text=text.replaceAll((?![mr | mrs | ms | dr])(\\s*[\\.\.\?\!]\\s*),“\n”)代码>
……但这似乎不起作用。如有任何建议,将不胜感激。
编辑:经过这里的反馈和一点tweeking,这是我问题的有效解决方案
private String convertText(String text) {
text = text.replaceAll("\\s+", " ");
text = text.replaceAll("[\n\r\\(\\)\"\\,\\:]", "");
text = text.replaceAll("(?i)(?<!dr|mr|mrs|ms|jr|sr|\\s\\w)(\\s*[\\.\\?\\!\\;](?:\\s+|$))","\r\n");
return text.trim();
}
私有字符串转换文本(字符串文本){
text=text.replaceAll(\\s+,“”);
text=text.replaceAll(“[\n\r\\(\\)\”\,\\:],”);
text=text.replaceAll(“(?i)(?您需要有一个允许在
前面的字母组合的完整列表。然后,您可以替换dr.
和mr.
(以及任何其他允许的组合)使用类似于dr28dsj458sj
和mr28dsj458sj
的独特功能。理想情况下,您应该检查文档中其他地方是否存在临时替换值。然后检查并删除所有句子终止符,然后再次检查并再次使用
替换出现的28dsj458sj
。您需要使用负向后看,而不是像这样使用负向前看
String x = "dr. house.";
System.out.println(x.replaceAll("(?<!mr|mrs|ms|dr)(\\s*[\\.\\?\\!]\\s*)","\n"));
String x=“豪斯医生。”;
System.out.println(x.replaceAll(“(?尝试从异常列表中删除括号,[]
):(!mr | mrs | ms | dr)
。它们代表“字符集”,而不是“完整字符串”"当你使用它们时。不知道这是否能完全解决你的问题,但值得一试。尝试这样做有几个问题。你将如何处理像J.H.罗纳尔多说火车正点运行……他说得对吗?
@Anthill,我已经添加了忽略单个字符的支持,这些字符可以ede一段时间。这是正确的方法吗?还有更简单的方法吗?我离得很近,我隐约记得负面表情。谢谢。我喜欢这种粗制滥造的解决方法,但它可能会降低性能。负面表情是我想要的。谢谢你的时间。