我有一段分割句子的代码(在一个点、一个问号或一个感叹号之后分割它们),但是有没有一种方法可以让代码忽略第一个括号中的部分?
$text = preg_replace('/\s+/',' ', 'The carrot (Daucus carota subsp. sativus) is a root vegetable. It is red. And it is yummmmy.');
$sentences = preg_split('/(\.|\?|\!)(\s)/', $text);
var_dump($sentences);
字符串
例如,如果我有这个文本
The carrot (Daucus carota subsp. sativus) is a root vegetable. It is red. And it is yummmmy.
型
我需要这些行,但目前它在subsp.
之后中断
The carrot (Daucus carota subsp. sativus) is a root vegetable.
It is red.
And it is yummmmy.
型
1条答案
按热度按时间f87krz0w1#
尝试:
[.?!][^(]*?\)(*SKIP)(*FAIL)|([!?.]\s)
说明
第一部分
[.?!]
表示.
或?
或!
[^(]*?
意味着延迟获取所有不属于(
的东西,直到\)
转义)
(*SKIP)(*FAIL)
任何与此匹配的内容都将被丢弃|
允许...第二部分
([!?.]\s)
原始匹配器的缩写版本