使用 preg_split 拆分正则表达式

时间:2021-07-13 20:36:47

标签: php regex

你好,我正在努力寻找正确的正则表达式公式。

$stringSplit = "+foo a -ba24+Sample3"; 

$vectorsPlus = preg_split('/[+*]/',$stringSplit ,-1,PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$vectorsMinus = preg_split('/[-*]/',$stringSplit ,-1,PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

我的目标是在符号上得到 2 个不同的数组,例如:

$vectorsPlus [0] = '+foo';
$vectorsPlus [1] = '+Sample3';

$vectorsMinus [0] = '-ba24';

我会感谢如何使用 Regex 魔法解决这个问题的任何帮助。

1 个答案:

答案 0 :(得分:2)

您可以匹配值,而不是使用拆分。

请注意,[+*][-*] 都与 * 字符匹配,并且不在示例数据中。

您可以匹配 +-,然后使用否定字符类匹配相反的排除空白字符。

$stringSplit = "+foo a -ba24+Sample3";

preg_match_all("/\+[^-+\s]+/", $stringSplit, $matchesPlus);
print_r($matchesPlus[0]);

preg_match_all("/-[^-+\s]+/", $stringSplit, $matchesMinus);
print_r($matchesMinus[0]);

输出

Array
(
    [0] => +foo
    [1] => +Sample3
)
Array
(
    [0] => -ba24
)

查看php demo

相关问题