我正在尝试使用 python 正则表达式将文本文件中的以下打包数组行转换为解压缩的数组行:
以下是文件内容:
inout [5:0] IO_PMU_LED;
input [7:0] PMU_DI_SCAN_IN_VCORE;
inout [31:0] PMU_DI_RIF_WR_DATA_VLP ;
output [9:0] PMU_DI_RIF_ADDR_VLP;
input [5:0] PMU_DI_LED_PAD_DRIVE_VALUE_VLP;
output [5:0] PMU_DI_LED_PAD_DRIVE_ENABLE_VLP;
以下是所需的输出:
inout IO_PMU_LED [5:0];
input PMU_DI_SCAN_IN_VCORE [7:0];
inout PMU_DI_RIF_WR_DATA_VLP [31:0];
output PMU_DI_RIF_ADDR_VLP [9:0];
input PMU_DI_LED_PAD_DRIVE_VALUE_VLP [5:0];
output PMU_DI_LED_PAD_DRIVE_ENABLE_VLP [5:0];
这是我尝试过的代码,它与文件内的任何模式都不匹配:
with open ('input.txt', 'r' ) as f:
print("Opening file:{}".format(f.name))
content = f.read()
content_new = re.sub('^s*(input|output|inout)s+([[d:d]])s+(w+)s*;', r'1 3 2;', content, flags = re.M)
print("Finished replacing content")
有什么建议吗?
我设法清理了您正在使用的正则表达式:
content_new = re.sub('^s*(input|output|inout)s+([d+:d+])s+(w+)s*;', ...)
第二个捕获组的内容周围有一组额外的括号,该组仅与集中的单个字符匹配。您也没有在 range 语句中处理超过一个数字,这意味着未捕获[31:0]
声明。
编辑:
我强烈推荐这个在线正则表达式测试器。它解析您输入的任何正则表达式,并准确告诉您它将如何评估。