Разделение абзацев на предложения с помощью регулярных выражений и PHP
Я регулярный пользователь noob и пытаюсь разбить абзацы на предложения. В моем языке мы используем довольно много сокращений (например, bl.a.) в середине предложений, поэтому я пришел к выводу, что мне нужно искать знаки препинания, за которыми следует один пробел, а затем слово, которое начинается с заглавной буквы, как:
[sentence1]...anymore. However...[sentence2]
Таким образом, параграф, как:
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.
Должен закончиться этим выводом:
[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.
и НЕ это:
[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.
Я нашел решение, которое делает первую часть этого с положительным взглядом:
$regexp = (?<=[.!?] | [.!?][\'"]);
а потом
$sentences = preg_split($regexp, $paragraph, -1, PREG_SPLIT_NO_EMPTY);
которая является отличной отправной точкой, но расщепляется слишком много раз из-за множества сокращений.
Я пытался сделать это:
(?<=[.!?]\s[A-Z] | [.!?][\'"])
нацеливаться на каждый случай любого из
. or ! or ?
сопровождается пробелом и заглавной буквой, но это не сработало.
Кто-нибудь знает, есть ли способ выполнить то, что я пытаюсь сделать?