首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex从字符串中提取两个值

使用regex从字符串中提取两个值
EN

Stack Overflow用户
提问于 2009-08-13 17:41:26
回答 3查看 914关注 0票数 0

我有一个字符串,看起来像这样:

'p10005c4‘

我需要将该字符串中的productId 10005和colorId 4提取到以下变量中:

$productId $colorId

productId > 10000。colorId > 1。

如何使用regex干净利落地做这件事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-13 17:51:14

使用以下regex应该可以做到这一点:

代码语言:javascript
复制
/p(\d+)c(\d+)/

这基本上意味着,匹配任何由p组成的字符串,后跟一个或多个数字,然后是一个c,然后是一个或多个数字。圆括号表示捕获组,由于您希望捕获这两个ids,因此它们被它们包围。

要将其用于您的目的,您可以执行类似以下操作:

代码语言:javascript
复制
$str = 'p10005c4';
$matches = array();

preg_match('/p(\d+)c(\d+)/', $str, $matches);

$productId = $matches[1];
$colorId   = $matches[2];

有关开始使用正则表达式的更多信息,您可能希望查看Regular-Expressions.info

票数 2
EN

Stack Overflow用户

发布于 2009-08-13 17:47:17

如果您的字符串始终为pXXXcXX,我建议您放弃正则表达式,只使用几个字符串函数。

代码语言:javascript
复制
list($productId,$colorId) = explode('c',substr($string,1),2);
票数 3
EN

Stack Overflow用户

发布于 2009-08-13 17:42:55

您可以使用以下正则表达式:

代码语言:javascript
复制
'/p(\d+)c(\d+)/'

如果您想确保产品代码为5位数:

代码语言:javascript
复制
'/p(\d{5})c(\d+)/'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1273503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档