构建正则表达式以提取值

时间:2017-03-14 06:29:48

标签: python regex

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

2 个答案:

答案 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