我有文件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)
上述正则表达式功能无法正常运行。 我在正则表达式方法中缺少什么?
答案 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=)
组捕获的文本。