【发布时间】:2021-12-23 14:02:18
【问题描述】:
我正在尝试使用 Python 3 re.findall 方法在 HTML 文件中提取 JavaScript 中定义的整数和变量值。
但是,我在将" 中包含的数字与\d* 匹配时遇到了一点困难,并且我也很难匹配" 中包含的字母数字字符串。
案例 1:
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: []
所需的输出应包含6876 和52907,但获得了一个空列表[]。
案例 2:
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只匹配字母、数字和_。所以它不会匹配第二个例子中的////。
标签: python python-3.x regex re