Я пытаюсь использовать регулярное выражение, чтобы разбить кусок китайского текста на предложения.Для моих целей разделителями предложений являются:
- полная остановка полной ширины。 (0x3002)
- вопросительный знак полной ширины? (0xFF1F)
- восклицательный знак полной ширины!(0xFF01)
Теперь предположим, что мой $ str такой: $str = "你好。你好吗? 我是程序员,不太懂这个我问题,希望大家能够帮忙!一起加油吧!";
Я использую preg_split со следующими параметрами:
$str2 = preg_split("/([\x{3002}\x{FF01}\x{FF1F}])/u",$str,PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
$ str2 isтеперь массив выглядит следующим образом:
array(3) { [0]=> string(6) "你好" [1]=> string(9) "你好吗" [2]=> string(91) " 我是程序员,不太懂这个我问题,希望大家能够帮忙!一起加油吧!" }
Однако ожидаемый результат:
[0] "你好。"
[1] "你好吗?"
[2] "我是程序员,不太懂这个我问题,希望大家能够帮忙!"
[3] "一起加油吧!"
Как видите, есть две проблемы: это не обрабатывает восклицательные знаки должным образоми, во-вторых, исчезают мои вопросительные знаки полной остановки и полной шириныЯ ожидаю, что delim_capture сохранит их.Я так долго смотрю на этот код, что не могу понять, в чем проблема.Я был бы очень признателен за предложения.