在字符串处拆分并保持周期
Splitting at string and keeping periods
我正试图在 .!?在保留它们的同时,但由于某种原因它无法正常工作。我做错了什么?
$input = "hi i am1. hi i am2.";
$inputX = preg_split("~[.!?]+\K\b~", $input);
print_r($inputX);
结果:
Array ( [0] => hi i am1. hi i am2. )
预期结果:
Array ( [0] => hi i am1. [1] => hi i am2. )
希望这就是您所期待的
$input = "hi i am1. hi i !am?2."; // i have added other ?! symbols also
$inputX = preg_split("/(\.|\!|\?)/", $input,-1,PREG_SPLIT_DELIM_CAPTURE);
print_r($inputX)
输出:
Array ( [0] => hi i am1 [1] => . [2] => hi i [3] => ! [4] => am [5] => ? [6] => 2 [7] => . [8] => )
我不确定你是否需要做一个 preg_split()
但如果可以的话试试 preg_match_all()
:
$input = "hi i am1. hi i am2.";
preg_match_all("/[^\.\?\!]+[\.\!\?]/", $input,$matched);
print_r($matched);
给你:
Array
(
[0] => Array
(
[0] => hi i am1.
[1] => hi i am2.
)
)
不用\b
试试,我觉得这里是多余的(如果不是的话)。
$input = "hi i am1. hi i am2.?! hi i am2.?";
$inputX = preg_split("~(?>[.!?]+)\K(?!$)~", $input);
print_r($inputX);
(?!$)
是为了避免在匹配的元素上拆分,如果它在字符串的末尾,那么不会有额外的空结果。原子分组 ?>
是为了避免在字符串末尾有一系列字符时拆分,例如 ?!.
(如果没有原子分组,它将在 !
上拆分,最后的结果将是单个字符 .
)。输出:
Array
(
[0] => hi i am1.
[1] => hi i am2.?!
[2] => hi i am2.?
)
我正试图在 .!?在保留它们的同时,但由于某种原因它无法正常工作。我做错了什么?
$input = "hi i am1. hi i am2.";
$inputX = preg_split("~[.!?]+\K\b~", $input);
print_r($inputX);
结果:
Array ( [0] => hi i am1. hi i am2. )
预期结果:
Array ( [0] => hi i am1. [1] => hi i am2. )
希望这就是您所期待的
$input = "hi i am1. hi i !am?2."; // i have added other ?! symbols also
$inputX = preg_split("/(\.|\!|\?)/", $input,-1,PREG_SPLIT_DELIM_CAPTURE);
print_r($inputX)
输出:
Array ( [0] => hi i am1 [1] => . [2] => hi i [3] => ! [4] => am [5] => ? [6] => 2 [7] => . [8] => )
我不确定你是否需要做一个 preg_split()
但如果可以的话试试 preg_match_all()
:
$input = "hi i am1. hi i am2.";
preg_match_all("/[^\.\?\!]+[\.\!\?]/", $input,$matched);
print_r($matched);
给你:
Array
(
[0] => Array
(
[0] => hi i am1.
[1] => hi i am2.
)
)
不用\b
试试,我觉得这里是多余的(如果不是的话)。
$input = "hi i am1. hi i am2.?! hi i am2.?";
$inputX = preg_split("~(?>[.!?]+)\K(?!$)~", $input);
print_r($inputX);
(?!$)
是为了避免在匹配的元素上拆分,如果它在字符串的末尾,那么不会有额外的空结果。原子分组 ?>
是为了避免在字符串末尾有一系列字符时拆分,例如 ?!.
(如果没有原子分组,它将在 !
上拆分,最后的结果将是单个字符 .
)。输出:
Array
(
[0] => hi i am1.
[1] => hi i am2.?!
[2] => hi i am2.?
)