php 用点来切分句子,但跳过忽略括号内的内容

gg0vcinb  于 2023-08-02  发布在  PHP
关注(0)|答案(1)|浏览(102)

我有一段分割句子的代码(在一个点、一个问号或一个感叹号之后分割它们),但是有没有一种方法可以让代码忽略第一个括号中的部分?

$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.

f87krz0w

f87krz0w1#

尝试:[.?!][^(]*?\)(*SKIP)(*FAIL)|([!?.]\s)

说明

第一部分

  • [.?!]表示.?!
  • [^(]*?意味着延迟获取所有不属于(的东西,直到
  • \)转义)
  • (*SKIP)(*FAIL)任何与此匹配的内容都将被丢弃
  • |允许...

第二部分

  • ([!?.]\s)原始匹配器的缩写版本

相关问题