我在splunk日志的日志文件中有多个方括号数据。我试图找到一个名为UserDataGuid的特定字段,然后在此后的括号中收集数据。我唯一的选择似乎是标准中的正则表达式,似乎与perl类似。然而,我在这里做错了什么不起作用?
| rex "\]\s(?<UserDataGuid>.*?)\s*$"
// this trial looks more promising but grabs the last bracket :( and doesn't name the field, to be used in a subSearch.
| rex "(?i)UserDataGuid\s*\[([^\}]*)\]
数据看起来像这样
[21] INFO UserDataGuid [fas08f0da-faf6-4308-aad6-hfld5643gs] [(null)] [(null)] [(null)]
我只想要guid
fas08f0da-faf6-4308-aad6-hfld5643gs
我希望它能成为一个我可以重复使用的字段,就像在splunk中使用字段一样。
答案 0 :(得分:1)
答案 1 :(得分:1)
使用
\]\s(?<UserDataGuid>.*?)\s*$
你说:匹配] &gt; \]
,跟随任何空格字符(只有一个)&gt; { {1}},由名称为 UserDataGuid &gt; \s
的群组跟随,其中包含除换行符之外的任何字符(零次,无限次)&gt; (?<UserDataGuid> ... )
(在懒惰模式下,?),跟随任何空格字符(零次,无限次)&gt; { {1}},后跟字符串&gt; .*?
我认为你不想要\s*
;
你想要匹配(以某种方式)$
,在匹配&#34;的组中没有呼叫(?<UserDataGuid> ... )
任何字符,除了换行符(零次,无限次)&gt; UserDataGuid
(在懒惰模式下,?)&#34;
在
UserDataGuid
更改} ,] ,然后,您在第1组中捕获了GUID
但是,你不需要匹配&#34; UserDataGuid \ s [*&#34; 你可以使用:
.*?
然后,您只匹配GUID,并在组#1中找到它 你可以删除组#1的括号,因为它是一个完整的匹配:
(?i)UserDataGuid\s*\[([^\}]*)\]
答案 2 :(得分:1)
看起来你想要
python