Dividir párrafos en oraciones con expresiones regulares y PHP
Soy un noob de expresiones regulares y estoy tratando de dividir los párrafos en oraciones. En mi idioma usamos un poco de abreviaturas (como: bl.a.) en medio de las oraciones, por lo que he llegado a la conclusión de que lo que necesito hacer es buscar puntuaciones, seguidas de una sola espacio y luego una palabra que comienza con una letra mayúscula como:
[sentence1]...anymore. However...[sentence2]
Así que un párrafo como:
Der er en lang og bevæget forhistorie bag lov om varsling m.v. i forbindelse med afskedigelser af større omfang. Det er ikke en bureaukratisk lovtekst blandt så mange andre.
Debería terminar en esta salida:
[0] => Der er en lang og bevæget forhistorie bag lov om varsling m.v. i forbindelse med afskedigelser af større omfang.
[1] => Det er ikke en bureaukratisk lovtekst blandt så mange andre.
y NO esto:
[0] => Der er en lang og bevæget forhistorie bag lov om varsling m.v.
[1] => i forbindelse med afskedigelser af større omfang.
[2] => Det er ikke en bureaukratisk lovtekst blandt så mange andre.
He encontrado una solución que hace la primera parte de esto con la característica de aspecto positivo detrás de:
$regexp = (?<=[.!?] | [.!?][\'"]);
y entonces
$sentences = preg_split($regexp, $paragraph, -1, PREG_SPLIT_NO_EMPTY);
que es un gran punto de partida, pero se divide demasiadas veces debido a las numerosas abreviaturas.
He intentado hacer esto:
(?<=[.!?]\s[A-Z] | [.!?][\'"])
para apuntar cada ocurrencia de cualquiera
. or ! or ?
seguido de un espacio y una letra mayúscula, pero que no funcionó.
¿Alguien lo sabe, si hay una manera de lograr lo que estoy tratando de hacer?