如何使用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
相关产品推荐
相关产品推荐

