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

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.'

回答:

看一下的定义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)

以上是 带标志的Python re.sub不会替换所有出现的事件 的全部内容, 来源链接: utcz.com/qa/417020.html

回到顶部