之前在导数据的时候,遇到需要把类似 中国香港09,10,44 这样一个字符串拆解出来的场景。
这个字符串包括了注册国家和类别, 起初采用这样一个正则 ^([^\d]*?)([\d,]+)$ 把国家和类别给取出来。
$string = "中国香港09,10,44";
preg_match('#^([^\d]*?)([\d,]+)$#', $string, $match);
$countryName = $match[1];
$class = $match[2];
/*
$match的值
array (
0 => '中国香港09,10,44',
1 => '中国香港',
2 => '09,10,44',
)
*/
但是觉得不是很方便,要通过这个数字index去取出分组匹配的内容。
早前在看正则表达式相关资料的时候留意到有个可以分组的内容。
于是又去查阅了下,得知可以通过 ?<groupName> 可以给捕获的分组命名。
于是把正则修改为 ^(?<countryName>[^\d]*?)(?<class>[\d,]+)$ 然后就可以用分组名来方便的拿到匹配的内容了。
$string = "中国香港09,10,44";
preg_match('#^(?<countryName>[^\d]*?)(?<class>[\d,]+)$#', $string, $match);
$countryName = $match['countryName'];
$class = $match['class'];
/*
$match的值
array (
0 => '中国香港09,10,44',
'countryName' => '中国香港',
1 => '中国香港',
'class' => '09,10,44',
2 => '09,10,44',
)
*/
词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
0