2015-12-22 30 views
2

我正在進行正則表達式來查找來自Graylog的選定日誌消息。問題是我可以使用一個正則表達式來處理各種消息。所以我做了正則表達式:如何減少正則表達式的計算時間

^<189>.*Authenticate\sfail.* 

但它是如此計算重。在這些消息中有用戶名,IP等,所以我沒有太多的可能性如何擺脫這個遞歸部分。因此,它是更好地使用

.* 

或者我應該嘗試找到郵件儘可能多的描述字符串?總之,是正則表達式:

^<189>.*UserName=.*Authenticate\sfail.* 

優於對計算性能:

^<189>.*Authenticate\sfail.* 
+0

你可以發佈你的正則表達式和一對日誌行作爲regex101的例子嗎?一行應該通過,另一行應該失敗。 – dasblinkenlight

+0

@dasblinkenlight對不起,我需要它的工作,並在這些日誌中獲得私人信息。但作爲例子,我在一分鐘內得到了約4k條日誌消息,其中約300條包含字符串「Authenticate」,其中一半包含「UserName = 」,後半部分包含「UserName = host/」 – Majzlik

回答

3

在這種情況下,

^<189>.*Authenticate\sfail.* 

會更快。

您可以使用Regex 101網站檢查運行正則表達式需要多少步驟。將日誌粘貼到測試字符串字段中,四處遊覽並找到需要儘可能少的步驟的解決方案。