关于正则表达式:Python string.replace正则表达式

Python string.replace regular expression

本问题已经有最佳答案,请猛点这里访问。

我有一个表单的参数文件:

1
parameter-name parameter-value

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

我使用之前发布的一个line replace函数来替换使用python的string.replace(pattern, sub)的行。我使用的正则表达式在vim中有效,但在string.replace()中似乎无效。

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

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

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

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


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

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

例如:

1
2
3
4
5
6
7
import re

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

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

1
2
3
4
5
6
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函数。

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

将打印axample atring


作为总结

1
2
3
4
5
6
7
8
9
10
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

你一定要找的是re.sub。所以你知道,你不需要锚和野猫。

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

将执行相同的操作——匹配看起来像"interfaceopdatafile"的第一个子字符串并替换它。