PHP和Preg_Split

时间:2013-09-04 22:17:25

标签: php regex

我正在使用preg_split正则表达式将句子分成数组。我能够成功地做到这一点。但是,我告诉preg_replace要查找的模式的一部分是文本本身的一部分。因此,部分文本也将被删除。有没有办法将模式重新插入数组?例如,如果我告诉preg_spit在此之后搜索句点和大写字母,它将从数组中删除大写字母,这是我不想要的。

这是代码:

$line = preg_split("@[\.\?\!\:][\W]+[A-Z]@"

示例字符串:

这是第一句话。这是第二句话?这是第三句话!这是第四句:这是第五句。 这是第六句,这也是美国的第六句。美国国防部长查克·哈格尔回应克里的言论,当弗吉尼亚州民主党众议员格里·康诺利提出另一起叙利亚化学袭击可能在美国采取行动的可能性时,他说“非常高”。

有解决方法吗?

谢谢

1 个答案:

答案 0 :(得分:2)

使用积极的先行,这应该有效....

$line = preg_split("[\.\?\!\:][\W]+(?=[A-Z])");

“(?=”和“)”之间的任何内容都匹配,但不包含在结果中。在最后一个括号后添加适当的重复运算符。

搜索“正则表达式查找,前瞻,后视,断言”将产生大量有关如何正确使用这些功能的信息: - )