带标志的Python re.sub不会替换所有出现的事件

发布于 2021-02-02 23:14:57

Python文档说:

re.MULTILINE:指定时,模式字符’^’在字符串的开头和每行的开头(紧随每个换行符之后)匹配…默认情况下,’^’仅在字符串的开头匹配…

那么,当我得到以下意外结果时,该怎么办?

>>> import re
>>> s = """// The quick brown fox.
... // Jumped over the lazy dog."""
>>> re.sub('^//', '', s, re.MULTILINE)
' The quick brown fox.\n// Jumped over the lazy dog.'
关注者
0
被浏览
96
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    看一下的定义re.sub

    re.sub(pattern, repl, string[, count, flags])
    

    第四个参数是计数,你使用re.MULTILINE(是8)作为计数,而不是标志。

    使用命名参数:

    re.sub('^//', '', s, flags=re.MULTILINE)
    

    或先编译正则表达式:

    re.sub(re.compile('^//', re.MULTILINE), '', s)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看