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

时间:2012-08-01 09:38:20

标签: php preg-split

我正在尝试将原始文本拆分为句子。因此,我只需使用preg_split()函数,并根据?.;的出现将原始文本拆分为句子。但正如预期的那样,由于.的一些特殊情况,例如“博士”,“先生”等,我遇到了一些问题。

如何从分裂中排除这样的单词或模式?

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

1 个答案:

答案 0 :(得分:2)

您可以将negative lookbehind添加到正则表达式,以确保该点前面没有“Mr”和公司:

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

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

<强> See it in action