正则表达式:如何指定和结束捕获

时间:2018-04-23 22:32:08

标签: regex splunk

让我说我喜欢这样的原始数据

  ERROR -- : FluentLogger: Can't convert to msgpack: (blah: blah: balh:.... ):

我想抓拍

FluentLogger: Can't convert to msgpack:

目前我有这个

(?>ERROR -- :)(?<msg1>.*):

但问题在于它会捕获

FluentLogger: Can't convert to msgpack: (blah: blah: balh:.... ):

我该怎么写正则表达式?

3 个答案:

答案 0 :(得分:1)

使用此正则表达式:/ERROR -- : ([A-Za-z]+:[\s\w']+):/g

Demo and explanation

答案 1 :(得分:0)

你可以这样做:

(?<=ERROR -- : ).*msgpack:

请注意,这接近您原来的尝试:

(?>ERROR -- :)(?<msg1>.*):

但并不完全,因为您使用?>来表示后方,但应该是(?<=)。

答案 2 :(得分:0)

一个或多个'not:'by':'使用

[^:]+:

在字符串中找到前两个

/[^:]+:[^:]+:/

在ERROR之后捕获前两个 - :在一个字符串

(?>ERROR -- :)(?[^:]+:[^:]+:)