我有一个字符串,看起来像这样:
'p10005c4‘
我需要将该字符串中的productId 10005和colorId 4提取到以下变量中:
$productId $colorId
productId > 10000。colorId > 1。
如何使用regex干净利落地做这件事?
发布于 2009-08-13 17:51:14
使用以下regex应该可以做到这一点:
/p(\d+)c(\d+)/这基本上意味着,匹配任何由p组成的字符串,后跟一个或多个数字,然后是一个c,然后是一个或多个数字。圆括号表示捕获组,由于您希望捕获这两个ids,因此它们被它们包围。
要将其用于您的目的,您可以执行类似以下操作:
$str = 'p10005c4';
$matches = array();
preg_match('/p(\d+)c(\d+)/', $str, $matches);
$productId = $matches[1];
$colorId = $matches[2];有关开始使用正则表达式的更多信息,您可能希望查看Regular-Expressions.info。
发布于 2009-08-13 17:47:17
如果您的字符串始终为pXXXcXX,我建议您放弃正则表达式,只使用几个字符串函数。
list($productId,$colorId) = explode('c',substr($string,1),2);发布于 2009-08-13 17:42:55
您可以使用以下正则表达式:
'/p(\d+)c(\d+)/'如果您想确保产品代码为5位数:
'/p(\d{5})c(\d+)/'https://stackoverflow.com/questions/1273503
复制相似问题