regex 构建正则表达式以提取值

i7uaboj4  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(83)
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
3qpi33ja

3qpi33ja1#

可以使用以下代码:

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]

在这里,我们使用正则表达式将.[]转换为逗号,以便它们易于拆分,并且我们去掉了字符串中的引号。然后我们用逗号分割字符串并检索第三个元素。

gpnt7bae

gpnt7bae2#

你并不真的需要regex来做这个。标准的字符串操作将工作得很好。

代码:

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

相关问题