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/
-1+位\d+
-连字符-
-匹配重置运算符\K
-除[^/]+
/
-1+字字符,然后是0+序列的\w+(?:-\w+*
和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