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

用正则表达式Negative Lookahead提取谷歌结果内层指定class div内容

正则修正方案

原代码问题根源

你标记行的写法存在两个核心问题:

  1. 多层嵌套分组叠加*量词会触发严重回溯,长文本下要么匹配超时要么结果异常
  2. 只对<开头的片段做负向预查,覆盖场景不全,无法兼容包含<的合法描述内容,也没法自动过滤外层嵌套的div结构

修正后完整代码

preg_match_all(
    '/<div class="BNeawe s3v9rd AP7Wnd">'.
        '(?:<span dir="rtl">)?'.
        '((?:(?!<\/(?:span|div)).)*)'.
        '(?:<\/span>)?'.
    '<\/div>/s',
    $gp,
    $desc
);

调整说明

  • 把不需要保留结果的分组改为非捕获组(以?:开头),避免结果数组出现多余空项,最终提取到的描述内容统一存储在$desc[1]中
  • 核心内容匹配逻辑改用负向预查先行校验:每匹配一个字符前都会确认后续不会出现</span>或</div>标签,既允许描述内容中存在单独的<字符,也会自动过滤外层嵌套的div,直接匹配到最内层目标div的内容
  • 末尾增加s修饰符,让.可以匹配换行符,适配描述内容带换行的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:24:02