Python使用regex删除HTMLtag

2024-06-09 00:25:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这通常并不难,但今天我似乎无法删除一个简单的javascript标记。。在

我使用的示例(格式化)

<section class="realestate oca"></section>
<script type="text/javascript" data-type="ad">
    window.addEventListener('DOMContentLoaded', function(){
        window.postscribe && postscribe(document.querySelector(".realestate"),
        '<script src="https://ocacache-front.schibsted.tech/public/dist/oca-loader/js/ocaloader.js?type=re&w=100%&h=300"><\/script>');
    });
</script>

我使用的示例(原始)

^{pr2}$

我想删除从<script(第二行的开头)到{}(最后一行)的所有内容。这将只输出第一行<section..>。在

下面是我的代码:

re.sub(r'<script[^</script>]+</script>', '', text)
#or
re.sub(r'<script.+?</script>', '', text)

我显然漏掉了一些东西,但我看不出是什么。
注意:我正在处理的文档主要包含纯文本,因此不需要使用lxml或类似的解析。在


Tags: text标记re示例datatypejsscript
1条回答
网友
1楼 · 发布于 2024-06-09 00:25:58

第一个regex不起作用,因为字符类([...])是一个字符集合,而不是字符串。因此,只有当它发现<script</script>之间由一个不包括</sc等的字符串分隔的{}与{}分隔

第二个regex更好,它不能工作的唯一原因是默认情况下,.通配符与换行符不匹配。要告诉它您想要它,您需要添加^{}标志:

re.sub(r'<script.+?</script>', '', text, flags=re.DOTALL)

相关问题 更多 >