gpt4 book ai didi

regex - 自动构建适合字符串集的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:45:59 25 4
gpt4 key购买 nike

我们已经编写了系统来分析来自大型网络的日志消息。该系统从许多不同的网络元素中获取日志消息,并通过正则表达式对其进行分析。例如,用户可能编写了两条规则:

^cron/script\.sh.*
.*script\.sh [0-9]+$

在这种情况下,只会选择与给定模式匹配的日志。过滤的原因是可能真的有很多日志消息,每天最多 1 GB。

现在是我问题的主要部分。由于有很多网络元素,其中有几种类型,并且它们中的每一个在路径中都有不同的参数......有没有办法自动生成一组正则表达式,这些正则表达式将以某种方式对日志进行分组?系统可以学习历史数据,例如从上周开始。生成的正则表达式不能非常准确,应该是提示用户将这样的新规则添加到系统中。

我在考虑无监督机器学习将输入分成几组,然后在每组中找到合适的正则表达式。有没有其他方法,也许更快或更好?最后但并非最不重要的一点是,如何找到匹配所获得组中所有字符串的正则表达式? (非常重要,所以 .* 不是答案。)


编辑 经过一番思考后,我将尝试简化问题。假设我已经对日志进行了分组。我想找到(最多)三个最大的子串(至少一个)对于集合中的所有字符串都是通用的。例如:

Set of strings:
cron/script1.sh -abc 1243 all
cron/script2.sh 1
bin/script1.sh -asdf 15

Obtained groups:
/script
.sh

现在我可以通过将这些组与 .*? 连接起来来构建一些简单的正则表达式。在此示例中,它将是 .*?(/script).*?(\.sh ).*?。这似乎是更简单的解决方案。

最佳答案

您可以试用此站点托管的工具:http://regex.inginf.units.it/

此工具会根据一组示例自动生成正则表达式,因此它应该非常适合您的用例。该网站还详细描述了它的工作原理(它基于遗传编程)。

关于regex - 自动构建适合字符串集的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7673509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com