你好,我正在努力寻找正确的正则表达式公式。
$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 魔法解决这个问题的任何帮助。
答案 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