Разделение абзаца на предложения с пунктуацией - не обман - PullRequest
0 голосов
/ 11 октября 2018

Вот нам точка, я снова застрял, используя регулярное выражение с функцией PHP preg_split().

Вот код:

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

Iпытаюсь разбить абзац на предложения.Этот код делает всю работу за меня.
вот ссылка на мой предыдущий вопрос

Но теперь мне нужно сохранить пунктуацию без изменений (знаки вопроса, полная остановка и т. Д.).).

использование PREG_SPLIT_DELIM_CAPTURE должно было выполнить эту работу, но почему-то это не работает.Я получаю только предложения, без точки или вопросительных знаков.

1 Ответ

0 голосов
/ 11 октября 2018

Ваше требование не нужно 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?""
}
...