Python字符串。替换正则表达式

我有一个参数文件的形式:

parameter-name parameter-value

其中参数可以是任意顺序,但每行只有一个参数。我想用一个新值替换一个参数的parameter-value

我正在使用一个行替换函数发布之前来替换使用Python的string.replace(pattern, sub)的行。我正在使用的正则表达式在vim中工作,但在string.replace()中似乎不起作用。

下面是我使用的正则表达式:

line.replace("^.*interfaceOpDataFile.*$/i", "interfaceOpDataFile %s" % (fileIn))

其中"interfaceOpDataFile"是我要替换的参数名(/ I不区分大小写),新参数值是fileIn变量的内容。

有没有办法让Python识别这个正则表达式,或者有没有其他方法来完成这个任务?

1064947 次浏览

str.replace() v2|v3不识别正则表达式。

要使用正则表达式执行替换,请使用re.sub() v2|v3

例如:

import re


line = re.sub(
r"(?i)^.*interfaceOpDataFile.*$",
"interfaceOpDataFile %s" % fileIn,
line
)

在循环中,最好先编译正则表达式:

import re


regex = re.compile(r"^.*interfaceOpDataFile.*$", re.IGNORECASE)
for line in some_file:
line = regex.sub("interfaceOpDataFile %s" % fileIn, line)
# do something with the updated line

你正在寻找re.sub函数。

import re
s = "Example String"
replaced = re.sub('[ES]', 'a', s)
print(replaced)

将打印axample atring

re.sub绝对是你要找的。你不需要锚和通配符。

re.sub(r"(?i)interfaceOpDataFile", "interfaceOpDataFile %s" % filein, line)

将做同样的事情——匹配看起来像“interfaceOpDataFile”的第一个子字符串并替换它。

作为总结

import sys
import re


f = sys.argv[1]
find = sys.argv[2]
replace = sys.argv[3]
with open (f, "r") as myfile:
s=myfile.read()
ret = re.sub(find,replace, s)   # <<< This is where the magic happens
print ret