Regex严格匹配两行具有不同结尾的行。

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (7)

我正在尝试匹配日志文件的以下文本:

2019-05-22 03:40:01 INFO  ReporteClaro:194 - Termino de procesar archivo

2019-05-22 03:40:01 INFO  ReporteClaro:208 - Termino de procesar Transaction Report

除了end(archivo)和(Payment Report)之外,它包含相同的单词。

我试过这个:

[\d]+-[\d]+-[\d]+ [\d]+:[\d]+:[\d]+ INFO  ReporteClaro:[\d]+ - Termino de procesar (archivo|Transaction Report)

但是由于|操作员的缘故,这是可选的匹配。这意味着它将匹配第一行或第二行,但我严格需要正则表达式来匹配它们。我认为这样的事情但显然不会运行:

[\d]+-[\d]+-[\d]+ [\d]+:[\d]+:[\d]+ INFO  ReporteClaro:[\d]+ - Termino de procesar (archivo&Transaction Report)

PD:我尝试过使用\ n的另一种解决方案,但有没有办法在不重复的情况下实现相同的结果?:

[\d]+-[\d]+-[\d]+ [\d]+:[\d]+:[\d]+ INFO  ReporteClaro:[\d]+ - Termino de procesar archivo\n

[\d]+-[\d]+-[\d]+ [\d]+:[\d]+:[\d]+ INFO  ReporteClaro:[\d]+ - Termino de procesar Transaction Report
提问于
用户回答回答于

如果“terivo”和“交易报告”是您在“Termino de procesar”之后所期望的唯一值,即没有像“Termino de procesar Something Else”那样的东西。您可以简单地执行以下操作。

r"^.+Termino de procesar.+$"gm

演示

实际上,只有当它们有“Termino de procesar”这个短语时,它才能从行的开始到结束。

如果其他日志条目中包含“Termino de procesar”,而您不想要的则可以使用以下内容。

r"^.+Termino de procesar archivo.*$|^.+Termino de procesar Transaction Report.*$"gm

DEMO2

我觉得简单通常是最好的解决方案。无需明确选择日期时间内的东西,或者“ReporteClaro”只需使用之前的catch来抓取它。更容易理解正则表达式imo。

编辑:您需要gm修改器,除非您逐行阅读。

热门问答

IM会话类型可以扩展吗?

software微软、谷歌、腾讯、阿里、百度……
推荐
您好,IM SDK会话分为以下几种 1、C2C 会话,表示单聊情况自己与对方建立的对话,读取消息和发送消息都是通过会话完成。 2、群会话,表示群聊情况下,群内成员组成的会话,群会话内发送消息群成员都可接收到。 会话分组暂不支持,需要您自行处理UI,同步分组信息。... 展开详请

Tencent Cloud API 3.0 SDK for PHP 没有文件夹 vendor?

推荐

为了防止和composer冲突,所以github上特意设置了不导出这个目录。如需要获取源码,请使用git clone的方式获取,不要用github上的下载源码方式。

lora接入腾讯物联网是只能在深圳地区吗?

DylanRichard

腾讯 · 产品经理 (已认证)

万物互联的时代,欢迎来到IoT的世界
推荐

深圳的南山及龙岗全区,可以租用腾讯运营的网络,支持CLAA协议,其它区域需要客户购买网关接入LPWA物联网络管理平台,支持LoRaWAN协议,我们也有网关、模组及传感器产品售卖。

ckafka是否支持kafka-connect-jdbc?

您好, 现在CKafka支持 kafka-connect-kafka(内侧功能),暂时还不能支持 jdbc的connector。如果这是您的需求,请提交工单,联系腾讯云工程师描述您的需求,我们会尽快规划并实现。

沙龙活动报名通知什么时候会收到通知呢?

Richel码农
推荐已采纳

沙龙报名之后会收到报名成功的短信,活动前一天会发送签到二维码短信和邮件,请留意.

请问有创建项目的sdk吗?

推荐

这是api2.0的接口,使用对应的sdk,代码托管在http://github.com/qcloudapi

扫码关注云+社区

领取腾讯云代金券