考虑像a(.+?)a
这样的基本正则表达式。如何用第一组的内容替换文件中所有出现的正则表达式?
答案 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)
您是否仅限于使用Python工具?因为sed
效果非常好。
$ sed -i <filename> "s/a(.+?)a/\1/g"
在Vim窗口中,提供以下搜索和替换ex命令:
:%s/\va(.+?)a/\1/g
请注意,许多正则表达式字符在Vim- \v
设置“非常神奇”模式下进行转义,从而无需转义。具有“magic”(默认值)的相同命令是:%s/a\(.\+\?)a/\1/g
如果您希望在Python中执行此操作,BigYellowCactus的答案非常好(使用re
模块进行正则表达式,使用fileinput
修改文件。)