Dividindo parágrafos em sentenças com regexp e PHP
Eu sou um noob regexp e tentando dividir parágrafos em frases. Na minha língua nós usamos um pouco de abreviações (como: bl.a.) no meio de frases, então cheguei à conclusão de que o que eu preciso fazer é procurar pontuações, que são seguidas por uma única espaço e, em seguida, uma palavra que começa com uma letra maiúscula como:
[sentence1]...anymore. However...[sentence2]
Então, um parágrafo 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.
Deve terminar nesta saída:
[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.
e não isso:
[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.
Eu encontrei uma solução que faz a primeira parte disso com o recurso lookbehind positivo:
$regexp = (?<=[.!?] | [.!?][\'"]);
e depois
$sentences = preg_split($regexp, $paragraph, -1, PREG_SPLIT_NO_EMPTY);
que é um ótimo ponto de partida, mas divide muitas vezes por causa das muitas abreviaturas.
Eu tentei fazer isso:
(?<=[.!?]\s[A-Z] | [.!?][\'"])
para atingir cada ocorrência de qualquer
. or ! or ?
seguido por um espaço e uma letra maiúscula, mas isso não funcionou.
Alguém sabe, se existe uma maneira de realizar o que estou tentando fazer?