Белый список определенных тегов HTML в Python? - PullRequest
0 голосов
/ 26 октября 2009

Допустим, 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)))

но это не работает.

Есть идеи? Я хочу, чтобы отрицательно соответствовать.

1 Ответ

2 голосов
/ 26 октября 2009

Используйте отрицательное прогнозное утверждение (?! … ):

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