超凡WIKI >>所属分类 >> 技术中心   

正则表达式分组命名

标签: 正则表达式 PHP

顶[0] 发表评论(0) 编辑词条

之前在导数据的时候,遇到需要把类似 中国香港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

收藏到:  

词条信息

quentin
quentin
秀才
最近编辑者 发短消息   

相关词条