首页 > 解决方案 > 使用 preg_split 拆分正则表达式

问题描述

您好,我正在经历一个糟糕的时刻,试图找到正确的正则表达式。

$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';

我会感谢任何帮助如何用正则表达式魔法解决这个问题。

标签: phpregex

解决方案


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

请注意,[+*]and[-*]都匹配一个*char 并且不在示例数据中。

您可以匹配 a+或 a ,-然后使用否定字符类匹配相反的不包括空白字符。

$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 演示


推荐阅读