我有一个重复模式的字符串。我有一个与模式匹配的正则表达式,但我想将它们拆分。
$target = 'a1v33a33v55a2v43';
我想将它们分成a1v33,a33v55和a2v43。基本上,我想将字符串拆分为['a1v33','a33v55','a2v43']的数组。
我尝试了以下代码,但它只匹配模式。我怎么能把它们分开呢?
$target = 'a1v33a33v55a2v43';
$pattern = '/(a[0-9]+v[0-9]+)*$/im';
preg_match($pattern, $target, $match);
echo '<pre>';
print_r($match);
答案 0 :(得分:5)
您也可以使用preg_split
:
$result = preg_split('~(?=a)~i', $target, -1, PREG_SPLIT_NO_EMPTY);
答案 1 :(得分:4)
将preg_match_all
与'/a[0-9]+v[0-9]+/i'
:
$target = 'a1v33a33v55a2v43';
$pattern = '/a[0-9]+v[0-9]+/i';
preg_match_all($pattern, $target, $match);
print_r($match);
请参阅IDEONE demo
/(a[0-9]+v[0-9]+)*$/im
模式匹配一些符合a[0-9]+v[0-9]+
模式,一次或多次出现的子字符串,直到字符串末尾($
)。当我们使用行尾/字符串锚删除量化分组时,我们可以匹配单个标记。