-1

我正在尝试以列表的形式存储一组字符串,该列表具有支持正则表达式的能力,并从文件中删除这些字符串。

例如:

list = ['enabled','vs-index \d+']
  • 其中 'vs-index \d' 表示为正则表达式。(可以是.... vs-index 30,vs-index 40 .等等...)

我有一个文本文件:

配置文件

ltm virtual testing { destination 80.80.80.80:https ip-protocol tcp mask 255.255.255.255 pool pool1 profiles { http { } tcp { } } source 0.0.0.0/0 source-address-translation { type automap } translate-address enabled translate-port enabled vs-index 38 }
ltm virtual blah { destination 50.50.50.50:https mask 255.255.255.255 profiles { fastL4 { } } source 0.0.0.0/0 translate-address enabled translate-port enabled vs-index 35 }

预期输出为:

ltm virtual testing { destination 80.80.80.80:https ip-protocol tcp mask 255.255.255.255 pool pool1 profiles { http { } tcp { } } source 0.0.0.0/0 source-address-translation { type automap } translate-address enabled translate-port }
ltm virtual blah { destination 50.50.50.50:https mask 255.255.255.255 profiles { fastL4 { } } source 0.0.0.0/0 translate-address enabled translate-port }

replace() 函数不接受列表,而是接受字符串。有什么方法可以支持列表和正则表达式?

4

1 回答 1

0

将您的列表转换为匹配所有元素的正则表达式,然后用于re.sub()删除所有匹配项。

import re

l = ['enabled','vs-index \d+']
regex = re.compile('|'.join(l)) # 'enabled|vs-index d+'
with open("config.txt") as f:
    contents = f.read()
result = re.sub(regex, '', contents)
print(result)
于 2020-11-18T20:02:07.750 回答