跳到主要内容

写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉)?

参考答案:

要过滤掉网页上所有的JavaScript和VBScript脚本,你可以使用正则表达式来匹配<script>标签及其内容。请注意,由于HTML和JavaScript的复杂性,使用正则表达式来完全准确地解析和过滤这些脚本可能不是最理想的方法。在实际应用中,使用HTML解析库(如Python的BeautifulSoup)通常更为可靠。

但是,如果你只是想使用一个简单的正则表达式来过滤大多数情况下的脚本,以下是一个基本的例子:

<script\b[^>]*>(.*?)<\/script>

这个正则表达式会匹配以<script开头,以</script>结尾的字符串,并捕获其中的内容。你可以使用这个正则表达式来替换匹配到的字符串为空字符串,从而过滤掉脚本。

以下是一个使用Python和re模块进行替换的示例:

import re

def remove_scripts(html):
    pattern = r'<script\b[^>]*>(.*?)<\/script>'
    cleaned_html = re.sub(pattern, '', html, flags=re.DOTALL)
    return cleaned_html

# 示例用法
html_with_scripts = """
<html>
<body>
<h1>Hello, World!</h1>
<script type="text/javascript">
  alert('This is a JavaScript script.');
</script>
<script type="text/vbscript">
  MsgBox("This is a VBScript script.")
</script>
</body>
</html>
"""

cleaned_html = remove_scripts(html_with_scripts)
print(cleaned_html)

这个示例中的remove_scripts函数接受一个包含HTML的字符串,并使用正则表达式替换掉所有的<script>标签及其内容。然后,它返回清理后的HTML字符串。

再次强调,这种方法可能无法处理所有复杂的情况,特别是当脚本标签中包含嵌套的HTML或其他复杂结构时。在实际应用中,使用专门的HTML解析库通常更为可靠和健壮。