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

如何通过正则表达式提取HTML里<br>后、-前的5132内容?

正则表达式提取特定内容的正确写法

嘿,我来帮你搞定这个问题~你之前写的正则有两个小问题:一是(*?)是无效语法,二是这个正则只是匹配整个span标签的内容,根本没定位到你要的<br>之后、-之前的区域,所以自然提取不到5132啦。

针对你的需求,这里有两个靠谱的正则方案:

方案1:专门匹配数字(适合确定目标是数字的情况)

$pattern = '/<span class="_c1subtitle_c1">.*?<br>\s*(\d+)\s*-.*?<\/span>/s';

我给你拆解下每个部分的作用:

  • .*?<br>:非贪婪匹配到<br>标签,跳过前面的"Name"内容
  • \s*:匹配<br>后面可能存在的空格(你的例子里有个空格,这个能覆盖)
  • (\d+):用捕获组提取我们想要的数字(也就是5132),后续可以通过捕获组获取这个值
  • \s*-:匹配数字后面的空格和减号
  • .*?<\/span>:匹配剩下的内容直到span标签结束
  • /s修饰符:让.可以匹配换行符,就算内容里有换行也不影响

方案2:匹配任意字符直到-(如果目标内容不一定是数字)

$pattern = '/<span class="_c1subtitle_c1">.*?<br>\s*([^-]+)\s*-.*?<\/span>/s';

这里把\d+换成了[^-]+,意思是匹配不是减号的任意字符,这样就算目标是字母或者其他符号也能提取到。

用这个正则匹配你的HTML内容后,捕获组1里就是你要的5132啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:58:24