python re sub 与 findall

标签 python regex

我的代码:

import urllib
import re
xml = urllib.urlopen('url').read()

我有兴趣从 xml 文件中删除某些标签及其内容,因此,我尝试使用正则表达式。

例如:

re.findall(r'<fig(.*?)</fig>', xml, re.DOTALL)

返回匹配项且非空。

但是,

re.sub(r'<fig(.*?)</fig>', ' ', xml, re.DOTALL)

不执行任何操作,xml 字符串未更改。我很困惑为什么,请帮忙。

最佳答案

re.sub的第四个参数不是flags,而是countsre.DOTALL 的值是 16(至少在 Python 2.7/3.4 中)。因此 re.sub(.., re.DOTALL) 只会替换 16 次。

指定 flags 作为关键字参数将解决您的问题:

re.sub(r'<fig(.*?)</fig>', ' ', xml, flags=re.DOTALL)

除此之外,re.sub 返回替换的字符串,而不是就地更改第三个参数。确保您已分配回函数的返回值。

关于python re sub 与 findall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26428244/

相关文章:

python - 鼠标悬停在物体上时的声音效果?

python - 在 Python 中流式传输标准输入/标准输出

regex - 条形码的正则表达式(12 或 14 位)

Python:正则表达式从单词中剥离模式并打印其余部分

javascript - 从 html 文本中提取所有 css 类

python - 从python中的字符串中提取年份

java - RegEx 拆分 camelCase 或 TitleCase(高级)

python - django 的另一台主机上的媒体服务器。这是正确的方法吗?

python - 使用 Pandas 计算 TimeField 小时/分钟总和

python - django - 获取用于调用 django View 的确切 GET url(包括参数)