从php中的pattern_match中排除某些模式


Excluding some pattern from pattern_match in php

我正在尝试将原始文本拆分成句子。因此,我简单地使用preg_split()函数,并根据?.;的出现情况将原始文本拆分为句子。但不出所料,由于.的一些特殊情况,例如"Dr."、"Mr."等,我遇到了一些问题。

我如何才能将这样的单词或短语排除在外?

preg_split('/('. )|('? )|('; )!(Mr'.)/', $content);

您可以在正则表达式中添加负查找,以确保点前面没有"Mr"和company:

preg_split('/((?<!(Mr|Dr))'.|'?|;) /', $content);

我还稍微简化了正则表达式。您还应该考虑将's|$(任何空白或输入末尾)替换为当前表达式末尾的单个空格。

在实际操作中查看