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

标签 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>

我只想明白这一点;无需建议 Beautiful Soup 或手动解析。

最佳答案

re.sub 的 4h 参数是计数而不是标志,您可以使用:

>>> 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)

关于python - re.DOTALL 适用于 re.match 但不适用于 re.sub?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39575785/

相关文章:

python - 填充其他拖车数据框的值

python - 使用python旋转矩阵时出现问题

javascript - 用于匹配 URL 的每个子域的正则表达式

regex - xsd:SimpleType:如何将属性限制为特定值和正则表达式值

php - 为什么 preg_match_all 返回两个匹配项?

javascript - 正则表达式在 IE 8、9 和 10 中根本不起作用

python - 从 url 的表中提取行

python - 使用python通过分页表抓取数据

python - 在 Python 中将对象放置在图层中 - Maya

PHP:用于匹配每一行的正则表达式