gpt4 book ai didi

Python正则表达式剥离脚本标签

转载 作者:太空宇宙 更新时间:2023-11-03 12:22:25 25 4
gpt4 key购买 nike

我有点害怕问这个问题,因为害怕“你不能用正则表达式解析 HTML”的 SO 邪教的报复。为什么 re.subn(r'<(script).*?</\1>', '', data, re.DOTALL)不要去掉多行“脚本”,而只去掉末尾的两个单行脚本,好吗?

谢谢楼主

>>> import re
>>> data = """\
<nothtml>
<head>
<title>Regular Expression HOWTO &mdash; Python v2.7.1 documentation</title>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2.7.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
"""

>>> print (re.subn(r'<(script).*?</\1>', '', data, re.DOTALL)[0])
<nothtml>
<head>
<title>Regular Expression HOWTO &mdash; Python v2.7.1 documentation</title>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2.7.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>

最佳答案

撇开这在一般情况下是否是个好主意的问题,您的示例的问题在于 fourth parameter to re.subn is count - 在 Python 2.6 中没有 flags 参数,尽管它在 Python 2.7 中作为第五个参数引入。相反,您可以将 `(?s) 添加到正则表达式的末尾以获得相同的效果:

>>> print (re.subn(r'<(script).*?</\1>(?s)', '', data)[0])

<nothtml>
<head>
<title>Regular Expression HOWTO &mdash; Python v2.7.1 documentation</title>




>>>

...或者如果您使用的是 Python 2.7,这应该可行:

>>> print (re.subn(r'<(script).*?</\1>(?s)', '', 0, data)[0])

... 即插入 0 作为 count 参数。

关于Python正则表达式剥离脚本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4698341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com