PCRE Regex:如何结合前瞻以达到以下目的?

时间:2014-03-25 18:52:42

标签: regex splunk lookahead lookbehind negative-lookahead

我正在尝试清理日志文件以在Splunk中对它们进行分类,所以我的问题是:

(?i)^(?:[^] *){8}(?P。+)((?= \ d {8} \ d {8} \ d {10})|。?。?(= \ d {8}))

粗体区域需要像if / else一样组合,[它在粗线之前选择好]

我希望它在刚好8位数之前停止并且点(ddddddd。)或8digit_8digit_10digits(8xd_8xd_10xd。)

我的任务是删除日志文件中的所有唯一数字,我可以更好地对其进行分类。

请帮助

1 个答案:

答案 0 :(得分:0)

你可以让以前的.+懒惰:

(?i)^(?:[^ ]* ){8}(?P<FIELDNAME>.+?)((?=\d{8}_\d{8}_\d{10}\.)|(?=\d{8}\.))
                                  ^

贪婪,它会尽可能地停止在最初的比赛中。我最后删除了?,因为只要前面有8位数字,它就会停止。此外,您实际上可以组合这些前瞻:

(?i)^(?:[^ ]* ){8}(?P<FIELDNAME>.+?)(?=\d{8}(?:_\d{8}_\d{10})?\.)