我正在制作正则表达式来查找来自 Graylog 的选定日志消息。问题是我只能使用一种正则表达式来表示各种消息。所以我制作了正则表达式:
^<189>.*Authenticate\sfail.*
但是它的计算量太大了。这些消息中有用户名、IP 等,因此我没有太多可能性如何摆脱该递归部分。那么是不是更好用
.*
或者我应该尝试在消息中找到尽可能多的描述字符串?简而言之,就是正则表达式:
^<189>.*UserName=.*Authenticate\sfail.*
计算性能优于:
^<189>.*Authenticate\sfail.*
最佳答案
在这种情况下,
^<189>.*Authenticate\sfail.*
会更快。
您可以使用Regex 101网站来检查运行正则表达式需要多少步骤。将您的日志粘贴到测试字符串字段中,尝试并找到需要尽可能少步骤的解决方案。
关于regex - 如何减少正则表达式的计算时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34415665/