如何拆分重复模式?

时间:2016-03-18 23:24:13

标签: php regex

我有一个重复模式的字符串。我有一个与模式匹配的正则表达式,但我想将它们拆分。

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

2 个答案:

答案 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]+模式,一次或多次出现的子字符串,直到字符串末尾($)。当我们使用行尾/字符串锚删除量化分组时,我们可以匹配单个标记。