Php 只抓取第一个数字的正则表达式

Php 只抓取第一个数字的正则表达式,php,regex,Php,Regex,我试图获取以下数字后的所有内容,因此我只在该字符串中输入商店名称: 完整字符串:/stores/1077029 gacha PIN 我想忽略的内容:/stores/1077029- 我需要抓取的内容:gacha PIN 这些数字可以随时更改,因此不是特定的ID,而是/stores/ 到目前为止,我的尝试只是抓取/stores/1 \/stores\/[0-9] 我还在努力,只是想看看是否能同时得到一些帮助,如果我解决了,我会发布一个答案。你应该这样做: $string = '/stores/1

我试图获取以下数字后的所有内容,因此我只在该字符串中输入商店名称:

完整字符串:
/stores/1077029 gacha PIN

我想忽略的内容:
/stores/1077029-

我需要抓取的内容:
gacha PIN

这些数字可以随时更改,因此不是特定的ID,而是
/stores/

到目前为止,我的尝试只是抓取
/stores/1

\/stores\/[0-9]

我还在努力,只是想看看是否能同时得到一些帮助,如果我解决了,我会发布一个答案。

你应该这样做:

$string = '/stores/1077029-gacha-pins';
preg_match('#/stores/[0-9-]+(.*)#', $string, $matches);
$part = $matches[1];
print_r($part);
你可以用

'~/stores/\d+-\K[^/]+$~'
或者更具体一点:

'~/stores/\d+-\K\w+(?:-\w+)*$~'
请参阅和

详细信息

  • /stores/
    -文本字符串
  • \d+
    -1+位
  • -
    -连字符
  • \K
    -匹配重置运算符
  • [^/]+
    -除
    /
  • \w+(?:-\w+*
    -1+字字符,然后是0+序列的
    -
    和1+字字符
  • $
    -字符串结束
见:


您可以使用:
~/stores/\d+-\K.+~
作为正则表达式,或者使用
preg\u replace
~/stores/\d+-~
替换为空字符串。
(\/stores\/[0-9]+-)(.*$
捕获组2将包含“gacha-pins”可能
“~/stores/\d+-\K[^/+$”
,您好,Jordan,请您回顾一下下面的答案,并告诉我哪种解决方案适合您?首先,您不太可能预期到
/stores/1077029-/stores/45677
中的当前模式。
$s = "/stores/1077029-gacha-pins";
$rx = '~/stores/\d+-\K[^/]+$~';
if (preg_match($rx, $s, $matches)) {
    echo "Result: " . $matches[0];
}
// => Result: gacha-pins