Python re.findall 不匹配 HTML 中的 JS 变量

Python re.findall Not Matching JS Variables in HTML

我正在尝试使用 Python 3 re.findall 方法在 HTML 文件中提取 JavaScript 中定义的整数和变量值。

但是,我在匹配 " 中的数字和 \d* 以及匹配 " 中的字母数字字符串时遇到了一些困难。

案例一:

s = """
   <script>
    var i = 1636592595;
        var j = i + Number("6876" + "52907");
   </script>
"""
pattern = r'var j = i + Number(\"(\d*)\" + \"(\d*)\");'
m = re.findall(pattern, s)
print(m) # Output: []

所需的输出应包含 687652907,但获得了一个空列表 []

案例二:

s = """
       xhr.send(JSON.stringify({
              "bm-foo": "AAQAAAAE/////4ytkgqq/oWI",
              "pow": j
          }));
"""
pattern = r'"bm-foo": \"(\w*)\",'
m = re.findall(pattern, s)
print(m) # Output: []

所需的输出应包含 AAQAAAAE/////4ytkgqq/oWI,但获得了一个空列表 []

我可以帮忙解释一下为什么我的正则表达式模式不匹配吗?

在第一个正则表达式中,您需要转义 +().

在第二个正则表达式中,使用 [^"]* 而不是 \w*,因为 \w 不匹配 /.

等标点符号
import re

s = """
   <script>
    var i = 1636592595;
        var j = i + Number("6876" + "52907");
   </script>
"""
pattern = r'var j = i \+ Number\("(\d*)" \+ \"(\d*)\"\);'
m = re.findall(pattern, s)
print(m)

s = """
       xhr.send(JSON.stringify({
              "bm-foo": "AAQAAAAE/////4ytkgqq/oWI",
              "pow": j
          }));
"""
pattern = r'"bm-foo": "([^"]*)",'
m = re.findall(pattern, s)
print(m)

DEMO