关于正则表达式:带有标志的Python re.sub不会替换所有出现的事件

关于正则表达式:带有标志的Python re.sub不会替换所有出现的事件

Python re.sub with a flag does not replace all occurrences

Python文档说:

re.MULTILINE: When specified, the pattern character '^' matches at the beginning of the string and at the beginning of each line (immediately following each newline)... By default, '^' matches only at the beginning of the string...

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

1
2
3
4
5
6
>>> import re
>>> s ="""// The quick brown fox.
... // Jumped over the lazy dog."""

>>> re.sub('^//', '', s, re.MULTILINE)
' The quick brown fox.
// Jumped over the lazy dog.'

查看re.sub的定义:

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

第4个参数是计数,您将re.MULTILINE(即8)用作计数,而不是作为标志。

使用命名参数:

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

或先编译正则表达式:

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

1
re.sub('(?m)^//', '', s)


re.sub的完整定义是:

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

这意味着,如果您告诉Python参数是什么,则可以传递flags而不传递count

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

或者,更简洁地说:

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


推荐阅读

    linux命令替换后门?

    linux命令替换后门?,系统,数据,工具,平台,工作,检测,最新,管理系统,通信,商

    linux替换文本的命令?

    linux替换文本的命令?,系统,地址,工作,信息,命令,标准,数据,内容,文件,字符

    linux命令被替换入侵?

    linux命令被替换入侵?,系统,密码,数据,合法,服务,检测,分析,网站,网络,异常,

    linux下替换文件命令?

    linux下替换文件命令?,文件,一致,评论,名称,标的,资料,工作,命令,字符串,内

    linux进入文档命令?

    linux进入文档命令?,工作,地址,图片,系统,标准,命令,信息,设备,一致,发行,Lin

    ab替换命令linux?

    ab替换命令linux?,名称,网络,地址,标准,命令,文件,信息,第一,数据,字符串,vim

    linux命令替换怎么用?

    linux命令替换怎么用?,数据,字符串,命令,系统,文件,批量,内容,方法,字符集,

    linux下s替换命令?

    linux下s替换命令?,系统,命令,状态,工作,数据,首次,字符串,文件,内容,模式,li

    替换删除linux命令?

    替换删除linux命令?,系统,不了,名称,档案,文件,命令,文件夹,目录,数据,字符

    linux查找和替换命令?

    linux查找和替换命令?,工作,系统,数据,字符串,文件,命令,实时,管理,首次,信

    linux上传文档命令?

    linux上传文档命令?,服务,工具,密码,系统,软件,工作,电脑,综合,命令,文件,Lin

    linux如何命令建文档?

    linux如何命令建文档?,时间,名字,文件,系统,新增,命令,文件名,密码,工作,目

    linux字符替换命令?

    linux字符替换命令?,系统,数据,软件,字符串,文件,命令,实时,首次,位置,工作,l

    linux命令打开文档?

    linux命令打开文档?,系统,软件,图片,电脑,一致,环境,名称,发行,中心,官方网

    linux命令正则表达式?

    linux命令正则表达式?,工作,环境,基础,网络,单位,名称,平台,信息,正规,管理,L

    linux剪切文档命令是?

    linux剪切文档命令是?,标准,系统,数据,文件,命令,地方,第一,位置,电子,名字,l

    linux简单的文档命令?

    linux简单的文档命令?,系统,地址,标准,工作,命令,数据,管理,时间,信息,单位,l

    linux查询文档命令?

    linux查询文档命令?,工作,地址,标准,命令,管理,信息,文件,目录,内容,终端,lin

    linux命令替换一列?

    linux命令替换一列?,地址,内容,标的,重组,名称,文件,命令,字符串,方法,批量,l

    linux替换命令se?

    linux替换命令se?,地址,系统,工作,状态,命令,标准,工具,服务,信息,文件,Linux