Estoy haciendo una expresión regular para encontrar el final de las oraciones en un texto. Aquí, supongo que cualquier oración puede terminar con cualquiera de ellas.!? A veces, aunque la gente como dos escribe !!!!!! en el y de su oración. Así que quiero reemplazar cualquier punto repetitivo, signo de exclamación o signo de interrogación. Pero quiero permitir el uso de '...'. ¿Cómo puedo incluir esta excepción? Aconseja, gracias!Expresión regular para encontrar el final de las oraciones
Pattern p = null;
try {
//([!?.] with optional spaces), followed by ([!?.] with optional spaces) repeated 1 or more times
p = Pattern.compile("([!?.]\\s*)([!?.]\\s*)+");
}
catch (PatternSyntaxException pex) {
pex.printStackTrace();
System.exit(0);
}
//get the matcher
Matcher m = p.matcher(this.sentence);
int index = 0;
while(m.find(index))
{
System.out.println(this.sentence);
System.out.println(p.toString());
String toReplace = sentence.substring(m.start(), m.end());
toReplace = toReplace.replaceAll("\\.","\\\\.");
toReplace =toReplace.replaceAll("\\?","\\\\?");
String replacement = ""+sentence.charAt(m.start());
this.sentence = this.sentence.replaceAll(toReplace, replacement);
System.out.println("");
index = m.end();
System.out.println(this.sentence);
}
Puede tener períodos dentro de oraciones sin que marquen el final de la oración, p. como en este. –
No necesita RegEx para ** buscar ** fin de oraciones. ¿Qué tipo de entrada estás usando? ¿Es texto sin formato? ¿Qué formato de salida te gustaría? ¿Están las oraciones separadas por una nueva línea? – vbence
Probablemente sea casi imposible considerar todos los casos extremos (consulte el comentario de Christoffer). – helpermethod