preg_match查找特定字符串后跟任意数字

时间:2017-11-16 10:37:34

标签: regex

我将网页的HTML标记作为$ subject。我正在使用preg_match搜索特定字符串 artist_x? 并尝试仅返回x部分。 x可以是1到12位的任何数字。因此,模式必须匹配以下任何/所有:

artist_1?
artist_12345?
artist_123456789012?

......然后带回来:

1
12345
123456789012

...分别

这是我能提出的最接近的:

$pattern = '|[artist_][0-9]{1,12}|';
preg_match($pattern, $subject, $matches);

但是它没有正常工作......它找到了我正在寻找的字符串,甚至返回了预期的数字,但返回的数字仍然有下划线。我已经尝试了很多解决方案来实现这一目标,但我没有想法。

谢谢!

1 个答案:

答案 0 :(得分:1)

我真的不明白你的模式应该做什么。 无论如何,这应该工作:您只需捕获您感兴趣的数字。 $matches将是一个数组,首先包含整个匹配,然后是组。所以第一组将是你想要的。

$subject = "artist_3333";
$pattern = '/artist_(\d{1,12})/';
preg_match($pattern, $subject, $matches);
echo($matches[1]); // 3333

\d在这里意味着与[0-9]相同,它匹配数字