list=[endpoint.av.GrisoftAV.activescan,endpoint.as.KasperskyAS.activescan,
endpoint.fw.ATTFW.description,
endpoint.av["360SafeAV"].activescan,
endpoint.av["H+BEDV"].description]
我需要构建一个正则表达式来提取第三个八位字节中的值
输出必须是:
GrisoftAV
KasperskyAS
ATTFW
360SafeAV
H+BEDV
答案 0 :(得分:0)
您可以使用以下代码:
lst = ['endpoint.av.GrisoftAV.activescan','endpoint.as.KasperskyAS.activescan','endpoint.fw.ATTFW.description','endpoint.av["360SafeAV"].activescan','endpoint.av["H+BEDV"].description']
lst = [re.sub('[.\[\]]', ',', i) for i in lst]
lst = [re.sub('[\"]', '', i) for i in lst]
for i in lst:
x = i.split(',')
print x[2]
在这里,我们使用正则表达式将.[]
转换为逗号,以便它们易于拆分,我们摆脱字符串中的引号。然后我们用逗号分割字符串并检索第三个元素。
答案 1 :(得分:0)
你真的不需要正则表达式。标准字符串操作可以正常工作。
<强>代码:强>
def find_octet(a_string):
return a_string.replace('["', '.').replace('"]', '.').split('.')[2]
测试代码:
list = [
'endpoint.av.GrisoftAV.activescan',
'endpoint.as.KasperskyAS.activescan',
'endpoint.fw.ATTFW.description',
'endpoint.av["360SafeAV"].activescan',
'endpoint.av["H+BEDV"].description']
for item in list:
print(find_octet(item))
<强>结果:强>
GrisoftAV
KasperskyAS
ATTFW
360SafeAV
H+BEDV