代码之家  ›  专栏  ›  技术社区  ›  Prashanth Benny

将段落分割成句子,保留标点符号-而不是重复

  •  0
  • Prashanth Benny  · 技术社区  · 6 年前

    PHP preg_split() 功能。

    代码如下:

    preg_split('~("[^"]*")|[!?.।]+\s*|\R+~u', $paragraph, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
    

    我正试着把一段话分成几个句子。这个代码帮我完成了任务。
    这里有一个链接到我的 previous question

    但是,现在我需要保持标点完整(问号,句号等)。

    PREG_SPLIT_DELIM_CAPTURE 本来应该做那件事的,但不知怎么的,它不是那样做的。我只得到句子,没有句号或问号。

    1 回复  |  直到 6 年前
        1
  •  1
  •   revo shanwije    6 年前

    你的要求不需要 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?""
    }