开发者社区> 问答> 正文

如何调试正则表达式?

如何调试正则表达式?

展开
收起
保持可爱mmm 2020-03-26 23:05:32 420 0
1 条回答
写回答
取消 提交回答
  • 在配置Logtail采集文本日志时,如果选择完整正则模式解析、采集日志,需要您根据自己的日志样例配置正则表达式。本文档介绍如何调试正则表达式。 如果您希望对您所在日志服务控制台所设置的正则表达式进行调试,您可以直接在界面上使用 验证按钮所提供的功能来进行检查: 对于行首正则表达式,检查一下当前设置能否正确匹配出您期望的日志数量。 对于提取字段,检查一下各个字段中的值是否是您所希望的。 如果您希望进行更多的验证乃至调试正则表达式,您可以利用诸如 Regex101、RegexTester 之类的在线工具,将控制台为您自动生成的正则表达式拷贝粘贴到这些工具上,然后填充您的实际日志来进行检查、调试。 完整正则模式提供自动生成功能,可能会为多行日志的message字段生成不合适的正则。本文档以Regex101为例,对该正则进行以下检查。 操作步骤 拷贝日志服务根据日志样例自动生成的完整正则。 打开网站Regex101。 在REGULAR EXPRESSION中粘贴自动生成的完整正则:

    [([^]]+)]\s[(\w+)]\s([^:]+:\s\w+\s\w+\s[^:]+:\S+\s[^:]+:\S+\s\S+).* 在界面的右侧,您还可以看到该正则的含义。

    在TEST STRING中贴入日志样例中的日志。 以下示例表示正则式与日志部分匹配, at 之后的内容并没有被包含到 message 字段中(表示为橘色和蓝色),因此该表达式不完全匹配样例日志,即对于该样例日志来说,这条正则表达式是错误的,使用这条正则表达式无法正常采集到所有日志数据。

    验证另一个错误:如果日志中只有两个冒号的情况。 以下示例表示匹配失败。

    将最后一个正则表达式替换为 [\S\s]+ ,并再次尝试检查匹配程度。 at 之后的内容如下:

    只有两个冒号的日志:

    您也可以按照以上方法来对您的正则表达式进行调试、修改,最终应用于Logtail采集配置中。

    2020-03-26 23:06:36
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载