2016-03-18 30 views
1

我有一个重复模式的字符串。我有一个匹配模式的正则表达式,但我想分割它们。如何分割重复模式?

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

回答

5

您可以使用preg_split太:

$result = preg_split('~(?=a)~i', $target, -1, PREG_SPLIT_NO_EMPTY); 
+1

我喜欢,因为它的简单优雅的这一个 - 起首:) – Jan

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]+模式,1次或多次出现,直到字符串的结尾匹配($ )。当我们使用行结束/字符串锚来移除量化分组时,我们可以匹配个体令牌。