这是我要指出的一点,我再次使用带有PHP
preg_split()
函数的正则表达式。
以下是代码:
preg_split('~("[^"]*")|[!?.।]+\s*|\R+~u', $paragraph, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
我正在尝试将段落分成句子。这段代码对我有用。
这是指向我的previous question
但是,现在我需要保持标点符号完整(问号,句号等)。
使用PREG_SPLIT_DELIM_CAPTURE
应该可以完成这项工作,但不知怎么以这种方式工作。我只有句子,没有句号或问号。
答案 0 :(得分:1)
您的要求不需要PREG_SPLIT_DELIM_CAPTURE
。当您需要将它们作为单独的比赛退还时,这将很有帮助。在这种情况下,您需要\K
:
<?php
var_dump(preg_split('~("[^"]*")|[!?.।]+\K\s*|\R+~u', <<<STR
hello! how are you? how is life
live life, live free. "isnt it?"
STR
, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY));
输出:
array(5) {
[0]=>
string(6) "hello!"
[1]=>
string(12) "how are you?"
[2]=>
string(11) "how is life"
[3]=>
string(21) "live life, live free."
[4]=>
string(10) ""isnt it?""
}