我正在尝试将原始文本拆分为句子。因此,我只需使用preg_split()
函数,并根据?
,.
和;
的出现将原始文本拆分为句子。但正如预期的那样,由于.
的一些特殊情况,例如“博士”,“先生”等,我遇到了一些问题。
如何从分裂中排除这样的单词或模式?
preg_split('/(\. )|(\? )|(\; )!(Mr\.)/', $content);
答案 0 :(得分:2)
您可以将negative lookbehind添加到正则表达式,以确保该点前面没有“Mr”和公司:
preg_split('/((?<!(Mr|Dr))\.|\?|;) /', $content);
我还简化了正则表达式。您还应该考虑将\s|$
(任何空格或输入结尾)替换为当前表达式末尾的单个空格。
<强> See it in action 强>