Python,Regex:有可能有两个结束锚吗?

2024-09-26 17:47:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用这个正则表达式:

(r'(?<=DESCR:).*?(?=")')

从如下格式的日志中检索数据

 DESCR: "Cisco ASR1004 Chassis"

或者

NAME: "CISCO2951/K9", DESCR: "CISCO2951/K9 chassis, Hw Serial#: FTX1619AK8E, Hw Revision: 1.1"

我想要一个有这种逻辑的陈述。你知道吗

查找'DESCR:'之后和'之前、'或'''


Tags: 数据name格式serialrevision逻辑ciscodescr
1条回答
网友
1楼 · 发布于 2024-09-26 17:47:04

请允许我回答标题中的问题,主要是:

Is it possible to have 2 ending anchors?

如果通过锚定,您了解一些刚刚检查但未使用的上下文,是的,您可以在lookahead中使用替换。你知道吗

如果要在bcd之前匹配a,请使用a(?=b|cd)。你知道吗

因此,您的正则表达式可以更改为r'(?<=DESCR:).*?(?=\'|,)',或者更好,可以在这里将交替转换为字符类:r'(?<=DESCR:).*?(?=[\',])'。你知道吗

但是,环视没有意义,因为我们可以使用捕获组来获得子匹配值:

r'DESCR:(.*?)[\'",]'

参见regex demo

Python demo

import re
p = re.compile(r'DESCR:\s*"(.*?)[\',"]')
s = "NAME: \"CISCO2951/K9\", DESCR: \"CISCO2951/K9 chassis, Hw Serial#: FTX1619AK8E, Hw Revision: 1.1\"\nDESCR: \"Cisco ASR1004 Chassis\""
print(p.findall(s))

相关问题 更多 >

    热门问题