'.', '?'및 '!'과 같은 문장 터미네이터의 모든 인스턴스를 바꾸려고하는데 '닥터'와 같은 문자열을 바꾸지 않습니다. 및 "미스터".자바 대체 정규식 제외와 함께
text = text.replaceAll("(?![mr|mrs|ms|dr])(\\s*[\\.\\?\\!]\\s*)", "\n");
를 ... 그러나 그것은 작동하지 않습니다
나는 다음과 같은 노력했다. 모든 제안을 부탁드립니다.
편집 : 여기에 피드백을 보내고이 문제를 해결하면 문제가 해결됩니다.
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();
}
코드는 모든 문장 부호와 관계없는 공백을 제거, 텍스트의 발췌에서 모든 * 화합물 및 단일 문장을 추출합니다.
* 는
'(?! mr | mrs | ms | dr)'예외 목록에서 대괄호'[]'를 제거해보십시오. 그들은 당신이 그들을 사용하고있는 것처럼 "전체 문자열"이 아니라 "문자 집합"을 의미합니다. 그것이 당신의 문제를 완전히 해결할 지 모르지만 시작 가치가있다. – newfurniturey
그래도 그것을 시도하는 데 몇 가지 문제점이있다. 'J.와 같은 순서를 어떻게 처리 할 것인가? H. 호나우두는 기차가 정각에 달리고 있다고 말합니다. 맞습니까? " – Anthill
@Anthill, 필자는 마침표 앞에 나오는 단일 문자를 무시하는 지원을 추가했습니다. 이것이 올바른 방법인가요? 더 쉬운 방법이 있습니까? –