【发布时间】:2021-11-20 23:47:49
【问题描述】:
堆垛机!
我一直在尝试解决这个问题,但没有运气。(.*?(?:\.|\?|!))(?: |$)
上面的模式是捕捉和打断段落中的所有句子,并以标点符号结尾。
例子
- 今天是最伟大的。你是最伟大的。
比赛回来了三个
Match {
1.
Today is the greatest.
You are the greatest.
}
但是,当有一个带句号的数字时,我试图让它不中断,并希望看到以下匹配:
Match {
1.Today is the greatest.
You are the greatest.
}
提前感谢您的帮助
【问题讨论】:
-
所以你有很多句子并且想要将它们分开 - 由
.(点)分隔?在某些句子中,1.或2.打破了这种模式? -
没错就是这样
-
我想出了以下 ^(?=\d\s?\.\s?)(.)+$ 但仍然不完整
-
另一个使用 preg_split 的想法:
preg_split('~[.!?](?<!\d.)\s+~', $str)请注意,例如。Mr.等等。它需要自然语言处理,才能准确地标记成句子。