我是一个正则表达式菜鸟,并试图将段落分成句子。在我的语言中,我们在句子中间使用了很多缩写词(例如: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 ?
后跟一个空格和一个大写字母,但这不起作用。
有谁知道,是否有办法完成我想做的事情?