我试图替换文件中的几行。这是我的示例文件:
input a1;
//Power_off assertion for all power ports (1 per each power domain)
// `assert_Check1
//Start of functional specification here
// always @* reg_z4=Check
下面是我为替换行而编写的python代码:
import re,sys,fileinput
for line in fileinput.input(sys.argv[1], inplace=True):
assertPattern=re.match(r'\/\/\s(`assert_.+\)$)',line, re.M)
alwaysPattern=re.match(r'^\/\/\s(always\s@\*.+\;$)',line, re.M)
print (line.rstrip().replace('//Power_off assertion for all power ports (1 per each power domain)', '`ifdef assert_stdcell\n\n//Power_off assertion for all power ports (1 per each power domain)'),)
if assertPattern:
print (line.rstrip().replace(assertPattern.group(),assertPattern.group(1)))
print (line.rstrip().replace('//Start of functional specification here','`endif\n\n//Start of functional specification here'),)
if alwaysPattern:
print (line.rstrip().replace(alwaysPattern.group(),alwaysPattern.group(1)),)
这段代码做了一些替换。但是,代码会复制文件中的所有行。进一步的alwaysPattern和assertPattern替换不起作用。下面是代码的输出:
input a1;
input a1;
`ifdef assert_stdcell
//Power_off assertion for all power ports (1 per each power domain)
//Power_off assertion for all power ports (1 per each power domain)
// `assert_Check1
// `assert_Check1
//Start of functional specification here
`endif
//Start of functional specification here
// always @* reg_z4=Check
// always @* reg_z4=Check
你知道为什么会发生这种复制吗?为什么图案替换不起作用
重复发生是因为你必须在ifs之外打印语句。所以你总是要打印两次行,另外如果你的任何一个regex匹配(他们不匹配),你会再次打印行
相关问题 更多 >
编程相关推荐