Php 正则表达式:make';零次或一次发生';状态,但仅适用于最后一场比赛
我有这个字符串:Php 正则表达式:make';零次或一次发生';状态,但仅适用于最后一场比赛,php,regex,preg-match,preg-match-all,Php,Regex,Preg Match,Preg Match All,我有这个字符串: key1:val1;key2:val2;key3:val3 也可以这样写: key1:val1;key2:val2;key3:val3; 我想对上面的两个字符串进行预匹配,这样它将返回相同的数组,如下所示: 匹配1 Array ( [0] => key1 [1] => key2 [2] => key3 ) 比赛2 Array ( [0] => val1 [1] => val2 [2] =>
key1:val1;key2:val2;key3:val3
也可以这样写:
key1:val1;key2:val2;key3:val3;
我想对上面的两个字符串进行预匹配,这样它将返回相同的数组,如下所示:
匹配1
Array
(
[0] => key1
[1] => key2
[2] => key3
)
比赛2
Array
(
[0] => val1
[1] => val2
[2] => val3
)
现在,我正在使用这个正则表达式:
(.*?):(.*?);
不幸的是,它不适用于第一个字符串。我以前尝试过使用下面的正则表达式,但结果更糟:
(.*?):(.*?);?
以下是我迄今为止的实验:
. 如果有一个纯PHP函数来解决这个问题,我也可以接受
$text = "key1:val1;key2:val2;key3:val3";
preg_match_all("/(.*?):(.*?)(?:;|$)/",$text,$matches);
print_r($matches);
$text = "key1:val1;key2:val2;key3:val3;";
preg_match_all("/(.*?):(.*?)(?:;|$)/",$text,$matches);
print_r($matches);
输出:
Array
(
[0] => Array
(
[0] => key1:val1;
[1] => key2:val2;
[2] => key3:val3
)
[1] => Array
(
[0] => key1
[1] => key2
[2] => key3
)
[2] => Array
(
[0] => val1
[1] => val2
[2] => val3
)
)
Array
(
[0] => Array
(
[0] => key1:val1;
[1] => key2:val2;
[2] => key3:val3;
)
[1] => Array
(
[0] => key1
[1] => key2
[2] => key3
)
[2] => Array
(
[0] => val1
[1] => val2
[2] => val3
)
)
是你想要的吗?@Toto是的,谢谢你,你能把你的答案贴出来吗?这样我就可以把它作为一个被接受的答案了?