我正在尝试替换句子终止符的所有实例,例如“。”、“?”和“!”,但我不想替换“博士”之类的字符串。和“先生”。
我尝试了以下方法:
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();
}
该代码将从文本摘录中提取所有*复合句和单个句子,删除所有标点符号和无关空格。
*有一些例外...