在带有正则表达式的字符后立即找到单词

问题描述 投票:1回答:4

我正在寻找以下行中'%'之后的单词:

RP/0/RP0/CPU0:Feb 26 20:04:01.869 UTC: esd[361]: %PKT_INFRA-FM-3-FAULT_MAJOR : ALARM_MAJOR :SWITCH_LINK_ERR_E :DECLARE :0/RP0/CPU0/7:

LC/0/9/CPU0:Feb 26 20:00:25.560 UTC: npu_drvr[253]: %PLATFORM-OFA-6-INFO : NPU #1 Initialization Completed

首先,我使用了以下Python代码,它正在运行。

result = re.search(r"\%.* \: ", txt)
result.group()

[here是结果:

但是,我的正则表达式在这样的行中失败:

LC/0/9/CPU0:Feb 27 15:33:58.509 UTC: npu_drvr[253]: %FABRIC-NPU_DRVR-1-PACIFIC_ERROR : [5821] : [PACIFIC A0]: For asic 0 : A0 Errata: Observed RX CODE errors on link 120 , This is expected if you have A0 asic versions in the system and do triggers like OIR, reload etc.
python nsregularexpression
4个回答
2
投票

正则表达式中的重复(*+)默认为“贪婪”模式:它们尝试匹配最长的文本。在您提供的失败案例中,单词要匹配的消息中还有其他冒号(:),因此贪婪的星星*都将其匹配。

您可以在重复之后添加问号(?),将其更改为:,将行为更改为“懒惰”(或“非贪婪”),]

result = re.search(r"\%.*? \: ", txt)

检查结果here。有关更多信息,请考虑阅读this article


1
投票

您想要的是一个百分号,后接一个或多个非空格:


1
投票

您可以使用:


0
投票

尝试:

© www.soinside.com 2019 - 2024. All rights reserved.