正则表达式 - 匹配html源代码中的javascript变量

时间:2017-02-09 16:21:18

标签: javascript python regex

我有一个内置javascript的网页,我需要匹配传递给函数的2个变量:

<html>
<!--Some html code-->
document.write(function('variable1', 'variable2'));
<!--Some html code-->
</html>

variable1和variable2可以是具有混合字符和数字的任何长度的字符串。我需要将它们两者相匹配。这就是我现在使用的:

data = getSoup(url) # my function to get the beautifulsoup object
script = data.find('script', text = re.compile(r'document\.write\(function\(')).text.replace('document.write(function(\'', '')
variable1 = script.split("', '")[0]
variable2 = script.split("', '")[1].replace("'));","")

但是我想使用更简单的东西&#34;安全&#34; (即使因为并不总是函数是一个脚本标记。

更新 感谢 Thomas Ayoub 回答,我找到了一个适合我的简单解决方案:

script = re.findall(r"document\.write\(function\(\'(.*?)\', \'(.*?)\'\)\)\;", str(data))[0]
variable1 = script[0]
variable2 = script[1]

1 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式:

regex = r"document\.write\(function\(\s*'([^']+)'\s*,\s*'([^']+)'\s*\)"

请参阅demo