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

如何使用Python3正则表达式从指定JS字符串中提取3个目标变量

Python3 正则提取实现方案

针对给定的JS href赋值语句,可通过单条带分组捕获的正则一次性稳定提取3个目标值,具体实现如下:

核心正则逻辑

正则完全贴合目标语句的语法结构,对JS语法里的正则特殊字符做转义,三个捕获组分别对应三个待提取内容:

import re
# 匹配模式
extract_pattern = r'document\.getElementById\(\'dlbutton\'\)\.href = "([^"]+)" \+ \(([^)]+)\) \+ "([^"]+)";'

捕获组对应关系:

  • 组1:匹配第一组双引号包裹的内容,即首个/d/开头的路径片段
  • 组2:匹配小括号包裹的内容,即内部的算术表达式
  • 组3:匹配最后一组双引号包裹的内容,即末尾带文件名的路径片段

可直接运行的代码示例

import re

# 待处理的源JS字符串
js_source = """document.getElementById('dlbutton').href = "/d/05UJmMTa/" + (213059 % 51245 + 213059 % 913) + "/Cool%20Customer%20-%20In%20Your%20Face%20%28Original%20Mix%29.mp3";"""

extract_pattern = r'document\.getElementById\(\'dlbutton\'\)\.href = "([^"]+)" \+ \(([^)]+)\) \+ "([^"]+)";'
match_result = re.search(extract_pattern, js_source)

if match_result:
    seg_first = match_result.group(1)
    expr_math = match_result.group(2)
    seg_last = match_result.group(3)

    # 输出验证
    print(f"首个路径片段: {seg_first}")
    print(f"算术表达式: {expr_math}")
    print(f"末尾文件路径: {seg_last}")

运行结果

首个路径片段: /d/05UJmMTa/
算术表达式: 213059 % 51245 + 213059 % 913
末尾文件路径: /Cool%20Customer%20-%20In%20Your%20Face%20%28Original%20Mix%29.mp3

匹配稳定性说明

  • 字符串段采用[^"]+做边界匹配,不会截断路径内的URL编码字符(如%20、%28)、特殊符号,完整保留路径内容
  • 算术表达式段采用[^)]+匹配小括号边界,不会被表达式内的%、+运算符干扰匹配
  • 只要目标JS语句的赋值结构、拼接段顺序不发生变化,就不会出现误匹配、漏提取的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:57:22