re.DOTALL适用于re.match,但不适用于re.sub



为什么这个匹配是预期的,但是没有sub?一行就行

import re
s = """<script>
wut</script>"""
print(re.match('<script(.*?)</script>', s, re.DOTALL).groups())
# Returns ('>nwut',)
print(re.sub('<script(.*?)</script>', '', s, re.DOTALL))
# Returns <script>
# wut</script>

我只是想了解这个;无需建议使用Beautiful Soup或手动解析

4h参数表示re.sub是计数不是标志,可以使用:

>>> print re.sub('<script.*?</script>', '', s, 0, re.DOTALL)
''

这里我们传递的是count=0,这意味着任意#的替换。

re.sub的签名为:

re.sub(pattern, repl, string, count=0, flags=0)

相关内容

最新更新