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

时间:2012-08-10 08:34:10

标签: python regex

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

3 个答案:

答案 0 :(得分:4)

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


示例:

import fileinput
import re

fn = "test.txt" # your filename

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

<强>之前:

  

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

<强>后:

  

你好   aShouldBeAMa
  你知道吗

答案 1 :(得分:2)

您可以使用版本&gt; = 6.0的Notepad++。从那以后它确实支持PCRE Regex。

然后,您可以使用正则表达式a(.+?)a并替换为$1

答案 2 :(得分:1)

SED

您是否仅限于使用Python工具?因为sed效果非常好。

$ sed -i <filename> "s/a(.+?)a/\1/g"

的Vim

在Vim窗口中,提供以下搜索和替换ex命令:

:%s/\va(.+?)a/\1/g

请注意,许多正则表达式字符在Vim- \v设置“非常神奇”模式下进行转义,从而无需转义。具有“magic”(默认值)的相同命令是:%s/a\(.\+\?)a/\1/g

的Python

如果您希望在Python中执行此操作,BigYellowCactus的答案非常好(使用re模块进行正则表达式,使用fileinput修改文件。)