regex - 如何减少正则表达式的计算时间

标签 regex

我正在制作正则表达式来查找来自 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/

相关文章:

具有指定开始和结束的序列的 Ruby 正则表达式

regex - R 正则表达式匹配从 HTML 中删除注释脚本

python - 寻找 re.match(pattern, ...) 和 re.search(r'\A' + pattern, ...) 之间的区别

regex - 为什么这里必须使用括号?

python正则表达式,从列表输出中提取字节

regex - R 正则表达式 - 替换第 n 个匹配项

java - Java 中的正则表达式 : How do I know if a specific part of Regex matches or not?

java - 正则表达式有助于捕获给定 unix 目录中的所有日志模式?

java - 如何更改正则表达式模式,以便按顺序找到每个匹配项

objective-c - 使用 iOS NSRegularExpression 的 Ruby 风格字符串插值