Python,正则表达式 : Is it possible to have 2 ending anchors?

标签 python regex

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

(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之前bcd ,使用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/

相关文章:

python - 使用过滤器发出 GET 请求

java - 引用正则表达式中以前匹配的组

python - python 中的正则表达式跳过行的前 2 个字符

python - 如何更新 nltk 包以便它不会将电子邮件分成 3 个不同的标记?

javascript - 在最后一次出现 10 数字字符串之后挑出所有内容

regex - Yahoo Pipes 中的正则表达式

Python/ Pandas : Dataframe multiple filters

Python:将元素添加到字典列表或关联数组

python - 将列表拆分为 pandas DataFrame 中的多列

python - 我应该使用camelCase遵守pep-8线长吗?