【问题标题】:How to make Ruby regex expression with some conditional inputs如何使用一些条件输入制作 Ruby 正则表达式
【发布时间】:2022-09-28 18:24:34
【问题描述】:

这是我的输入看起来像

格式 1:2022-09-23 18:40:45.846 I/getUsers: fetching data

格式 2:11:54:54.619 INFO loadingUsers:23 - visualising: \"Entered to dashboard

这是适用于格式一的表达式,我希望使用相同的(对此进行更改)来处理两种格式

^([0-9-]+ [:0-9.]+)\\s(?<level>\\w+)[\\/+](?<log>.*)

结果与格式 1 相同:

一级

消息 getUsers:获取数据

第二个应该是

级别信息

消息加载用户:23 - 可视化:\“输入到仪表板

帮助将不胜感激,谢谢

    标签: regex ruby


    【解决方案1】:

    您可以使用

    ^([0-9-]+ [:0-9.]+|[0-9:.]+)\s(?<level>\w+)[\/+\s]+(?<log>.*)
    

    请参阅Rubular demo

    细节

    • ^ - 一行的开始
    • ([0-9-]+ [:0-9.]+|[0-9:.]+) - 第 1 组:一位或多位数字/连字符、空格、一位或多位数字/冒号/点,或一位或多位数字/冒号/点
    • \s - 一个空格
    • (?&lt;level&gt;\w+) - 组“级别”:一个或多个字母、数字或下划线
    • [\/+\s]+ - 一个或多个斜杠、+ 或空格
    • (?&lt;log&gt;.*) - 组“日志”:除换行符之外的零个或多个字符尽可能多。

    如果您想精确您的第 1 组模式(尽管我认为在这些情况下可以使用松散模式),您可以将 ([0-9-]+ [:0-9.]+|[0-9:.]+) 替换为 (\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}\.\d+|\d{1,2}:\d{1,2}:\d{1,2}\.\d+),请参阅 this regex demo

    【讨论】:

      猜你喜欢
      • 2011-10-30
      • 2022-07-06
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多