替换文件中的所有正则表达式匹配项

Seb*_*ann 2 python regex

考虑一个基本的正则表达式,如a(.+?)a. 如何用第一组的内容替换文件中该正则表达式的所有出现?

slo*_*oth 5

使用可以使用re模块在python中使用正则表达式和fileinput模块来简单地就地替换文件中的文本


例子:

import fileinput
import re

fn = "test.txt" # your filename

r = re.compile('a(.+?)a')
for line in fileinput.input(fn, inplace=True):
  match = r.match(line)
  print match.group() if match else line.replace('\n', '')
Run Code Online (Sandbox Code Playgroud)

前:

你好,这是
aShouldBeAMatch!!!!!这应该消失了,
你知道

后:

你好,这个
aShouldBeAMA
你知道


注:本作品,因为参数inplace=True会导致输入文件移动到备份文件和标准输出被定向到输入文件,为下记录的可选就地过滤

  • 作为对任何可能感到困惑的人的说明,该 for 循环中的 `print` 语句被重定向到该文件。(`fileinput` 的 [文档](http://docs.python.org/library/fileinput.html) 非常好)。 (2认同)