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

Python3使用re.findall提取HTML中JS变量正则匹配失败求助

正则匹配失败原因及解决方案

场景1匹配失败原因

  • 正则语法中+属于特殊量词,代表匹配前一个字符1次及以上,你需要匹配代码里字面量的加号,必须转义为\+
  • 不需要对双引号做多余的转义,Python原始字符串中直接写"即可匹配字符串中的双引号
  • 修正后的正则写法:
pattern = r'var j = i \+ Number\("(\d*)" \+ "(\d*)"\);'

运行后输出为[('6876', '52907')],符合预期。

场景2匹配失败原因

  • 你使用的\w元字符仅匹配大小写字母、数字和下划线,目标字符串包含/、+等不在\w范围内的特殊字符,因此匹配失败
  • 匹配双引号包裹的任意内容时,使用[^"]*(匹配所有非双引号的字符)是更通用的写法,不会受特殊字符限制
  • 修正后的正则写法:
pattern = r'"bm-foo": "([^"]*)",'

运行后输出为['AAQAAAAE/////4ytkgqq/oWI'],符合预期。

额外注意事项

  • 正则中的特殊字符包括+、*、?、.、(、)、[、]等,要匹配这些字符的字面量必须加反斜杠转义
  • 提取固定分隔符(如双引号、单引号)包裹的内容时,优先用[^分隔符]*的写法,可避免贪婪匹配越界的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:07