我正在使用这个正则表达式:
(r'(?<=DESCR:).*?(?=")')
从如下格式的日志中检索数据
DESCR: "Cisco ASR1004 Chassis"
或
NAME: "CISCO2951/K9", DESCR: "CISCO2951/K9 chassis, Hw Serial#: FTX1619AK8E, Hw Revision: 1.1"
我想要一个具有这种逻辑的声明。
查找在 'DESCR:' 之后和 ',' 之前开始的字符串 OR '''
最佳答案
我来回答一下标题中的问题,主要是:
Is it possible to have 2 ending anchors?
如果通过 anchor ,您了解一些刚刚检查但未使用的上下文,是的,您可以在lookahead中使用交替。
如果你想匹配a
之前b
或cd
,使用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))
关于Python,正则表达式 : Is it possible to have 2 ending anchors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37889435/