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

Cee*_*man 3 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>
Run Code Online (Sandbox Code Playgroud)

我只想了解这一点;无需建议使用Beautiful Soup或手动解析。

anu*_*ava 5

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

>>> print re.sub('<script.*?</script>', '', s, 0, re.DOTALL)
''
Run Code Online (Sandbox Code Playgroud)

在这里,我们通过count=0,这意味着任何数量的替换。

的签名re.sub

re.sub(pattern, repl, string, count=0, flags=0)
Run Code Online (Sandbox Code Playgroud)

  • 这可以节省我一个小时 (2认同)