正则表达式或("|")匹配优先级控制

最近在使用阿里云的日志服务,其中比较灵活的地方是支持自定义正则匹配,可以使用正则匹配字段,也可以作为多行日志的条件。公司的日志格式没有一个统一的标准,大概有几十种日志格式,还好我的正则原本玩得666,否则我们这日志部署到阿里云日志服务上可能一般人得玩累死。

匹配多行日志开始头(单行亦如此)的正则格式如下:

匹配日志内容的正则格式如下:

其中 \d{10}表示匹配时间戳(有的日志是使用时间戳作为日志时间,无奈...),正则表达式的 |符号优先级往往是前面的优先级比后面的高,因此这里将 \d{10}放置到末尾。此外, .*?使用了非贪婪匹配也是一个重点,否则该表达式无法达到预期结果。

Leave a Reply

Your email address will not be published.