如何使用一些条件输入创建Ruby正则表达式

thtygnil  于 2022-11-04  发布在  Ruby
关注(0)|答案(1)|浏览(108)

这是我投入的样子
格式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相同:
一级
消息获取用户:提取数据
对于2档,它应该是
级别信息
消息加载用户:23 -可视化:“进入 Jmeter 板
如能提供帮助,将不胜感激,谢谢

u7up0aaq

u7up0aaq1#

您可以使用

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

请参阅Rubular demo

  • 详细数据 *:
  • ^-行首
  • ([0-9-]+ [:0-9.]+|[0-9:.]+)-组1:一个或多个数字/连字符、空格、一个或多个数字/冒号/点,或者一个或多个数字/冒号/点
  • \s-空白
  • (?<level>\w+)-组“级别”:一个或多个字母、数字或下划线
  • [\/+\s]+-一个或多个斜杠、+或空格
  • (?<log>.*)-组“日志”:尽可能多的零个或多个除换行符以外的字符。

如果你想精确你的Group 1模式(尽管我考虑在这些场景中使用一个松散的模式),你可以用(\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+)替换([0-9-]+ [:0-9.]+|[0-9:.]+),参见this regex demo

相关问题