You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并正则表达式提取curl抓取页面中指定span内的数字?

直接合并正则,一次提取目标数字

你可以直接修改原来匹配<span>标签的正则,把数字捕获的逻辑整合进去,这样就能一步拿到想要的数字,不用分两次匹配。

根据你描述的原始HTML结构(内容由<br />分隔),我们可以调整正则,跳过<span>内的前置文本,直接捕获后面的数字:

// 针对原始HTML中用<br />分隔的情况
$pattern4 = '/&lt;span class="_c1 ei_card_subtitle _c1"&gt;.*?&lt;br \/&gt;(\d+)&lt;/span&gt;/i';
$cc = preg_match_all($pattern4, $ccpage, $matches);
// 直接输出捕获到的数字
echo $matches[1][0];

如果你的实际匹配结果里是用-分隔的(比如你提到的返回内容是“some text - digits”),可以把正则里的分隔符换成\- :

// 针对返回内容用"- "分隔的情况
$pattern4 = '/&lt;span class="_c1 ei_card_subtitle _c1"&gt;.*?\- (\d+)&lt;/span&gt;/i';
$cc = preg_match_all($pattern4, $ccpage, $matches);
echo $matches[1][0];

为什么这样写?

  • .*?是非贪婪匹配,会匹配从<span>开始到第一个分隔符(<br />或-)的所有前置内容,避免匹配到其他无关的标签或内容;
  • (\d+)专门捕获连续的数字,把它放在分隔符后面,就能精准定位到你要的数字部分;
  • 整个正则还是保留了对目标<span>标签的匹配,确保我们只从正确的标签里提取内容。

如果数字前后有多余的空格,你可以把(\d+)改成(\s*\d+\s*),这样会自动忽略数字前后的空白字符,不过如果你的数字是纯数字没有空格,用(\d+)就足够了。

内容的提问来源于stack exchange,提问作者Timo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:38:11