python 中的白名单某些 HTML 标签?

发布于 2024-08-09 01:56:57 字数 711 浏览 4 评论 0原文

假设 allowed_bits = ['a', 'p']

re.compile(r'<(%s)[^>]*(/>|.*?</\1>)' % ('|'.join(allowed_bits)))

匹配:

<a href="blah blah">blah</a>
<p />

而不是:

<html>blah blah blah</html>

我想做的就是把它颠倒过来,这样它就匹配

<html>blah blah</html>
<script type="text/javascript">blah blah</script>

而不是:

<p>Hello</p>

我的想法是做某事喜欢:

re.compile(r'<(**^**%s)[^>]*(/>|.*?</\1>)' % ('|'.join(allowed_bits)))

但这不起作用。

有什么想法吗?我想消极匹配。

Let's say allowed_bits = ['a', 'p']

re.compile(r'<(%s)[^>]*(/>|.*?</\1>)' % ('|'.join(allowed_bits)))

matches:

<a href="blah blah">blah</a>
<p />

and not:

<html>blah blah blah</html>

What I want to do is turn it on its head, so that it matches

<html>blah blah</html>
<script type="text/javascript">blah blah</script>

and not:

<p>Hello</p>

My thinking was to do something like:

re.compile(r'<(**^**%s)[^>]*(/>|.*?</\1>)' % ('|'.join(allowed_bits)))

but this doesn't work.

Any ideas? I want to negatively match.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

↙厌世 2024-08-16 01:56:57

使用否定先行断言(?! … )

re.compile(r'<(?!%s)[^>](/>|.?)' % ('|'.join(allowed_bits)))

Use a negative lookahead assertion (?! … ):

re.compile(r'<(?!%s)[^>](/>|.?)' % ('|'.join(allowed_bits)))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文