2016-03-18 58 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次或多次出現,直到字符串的結尾匹配($ )。當我們使用行結束/字符串錨來移除量化分組時,我們可以匹配個體令牌。