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

时间:2016-09-19 14:35:08

标签: python regex

为什么这个符合预期,但未能分?单行s工作正常。

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>

我只想了解这一点;无需建议美丽的汤或手动解析。

1 个答案:

答案 0 :(得分:3)

re.sub的4h参数是count not flags,你可以使用:

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

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

Signature of re.sub is

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