使用python正则表达式替换文件中的参数值

时间:2018-09-29 21:32:01

标签: regex python-2.7

我有文件load_file,其内容如下所示(以下为修剪后的版本): 我想动态替换某些参数的值。 例如,我想要“ BENCHMARK = EDA”。 “ BENCHMARK”一词可能会在文件中重复多次。

# Official BENCHMARK values are
#       -SWBUILD
#       -VDA
#       -VDI
#       -DATABASE
#       -EDA
#
##############################################################################
BENCHMARK=VDI
LOAD=10
INCR_LOAD=10
NUM_RUNS=10

我尝试执行以下操作:

  import re
  with open(load_file, 'r') as file:
     filedata = file.read()
  filedata=re.sub('BENCHMARK=*','BENCHMARK=EDA',filedata)

上述正则表达式功能无法正常运行。 我在正则表达式方法中缺少什么?

1 个答案:

答案 0 :(得分:1)

您期望的匹配项位于行首,您需要将BENCHMARK=之后的所有文本都匹配到行尾。

使用

re.sub('(?m)^BENCHMARK=.*','BENCHMARK=EDA',filedata)

请参见Python demo

详细信息

  • (?m)^-(?m) re.DOTALL内联修饰符使^与行首匹配
  • BENCHMARK=-文字
  • .*-该行的其余部分。

您还可以使用捕获组/反向引用来缩短正则表达式:

re.sub('(?m)^(BENCHMARK=).*', r'\1EDA',filedata)

其中\1(BENCHMARK=)组捕获的文本。