Regex 多行正则表达式匹配

Regex 多行正则表达式匹配,regex,Regex,当前正在尝试获取可以执行多行匹配的正则表达式。但是,我希望在比赛中忽略“2020-07-06T16:06:57-04:00 k8s-node03 k8s_库存[28257]”。例如: Match group 1: INFO A. Line 1 Match group 2: INFO B. Line 1 B. Line 2 B. Line 3 Match group 3: C. Line 1 示例日志: 2

当前正在尝试获取可以执行多行匹配的正则表达式。但是,我希望在比赛中忽略“2020-07-06T16:06:57-04:00 k8s-node03 k8s_库存[28257]”。例如:

Match group 1: INFO  A. Line 1
Match group 2: INFO  B. Line 1 
                     B. Line 2
                     B. Line 3
Match group 3: C. Line 1
示例日志:

2020-07-06T16:06:57-04:00 k8s-node03 k8s_inventory[28257] 06-07-2020 16:06:57.535 [SpringContextShutdownHook] INFO  A. Line 1
2020-07-06T16:06:57-04:00 k8s-node03 k8s_inventory[28257] 06-07-2020 16:06:57.539 [SpringContextShutdownHook] INFO  B. Line 1
2020-07-06T16:06:57-04:00 k8s-node03 k8s_inventory[28257] B. Line 2
2020-07-06T16:06:57-04:00 k8s-node03 k8s_inventory[28257] B. Line 3
2020-07-06T16:06:57-04:00 k8s-node03 k8s_inventory[28257] 06-07-2020 16:06:57.548 [SpringContextShutdownHook] C. Line 1
我创建的正则表达式将所有内容放在不同的匹配组中

^\d{4}-\d{2}-\d{2}.\d{2}:\d{2}:\d{2}-\d{2}:\d{2} \S+ \S+ (?<rawlog>.*)$
^\d{4}-\d{2}-\d{2}.\d{2}:\d{2}:\d{2}-\d{2}:\d{2}\S+\S+(?*)$
--但是我想知道如何在同一组比赛中获得B组比赛。这可能吗/w regex?

您可以尝试:

^\d{4}-\d{2}-\d{2}.\d{2}:\d{2}:\d{2}-\d{2}:\d{2} \S+ \S+ (?:\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}\.\d{3} \[[^][]*\](?: [A-Z]{2,}\s+)?)?(A\..+)|(B\..+)|(C\..+)$
对上述正则表达式的解释:

  • ^,$
    -分别匹配行首和行尾
  • (A\.*)
    -表示在
    A.
    之后直到最后捕获所有内容的第一个捕获组
  • |
    -表示替换
  • (B\..*)
    -表示在
    B.
    之后直到最后捕获所有内容的第二个捕获组
  • (C\..*)
    -表示在
    C.
    之后直到最后捕获所有内容的第三个捕获组。如果希望它们是动态的,只需使用
    [A-Z]\。
感谢您推荐这个有价值的正则表达式


请提供有关您正在使用的工具或平台的详细信息,如@Mandy8055中所述,此正则表达式按预期工作:)只是一个简单的问题——在此正则表达式中,它正在查找硬编码的a、B或C值。。。有可能让它寻找任何值吗?我目前正在尝试将这个正则表达式实现到fluentd中,它使用ruby Syntax。例如,在本例中:我们无法捕获示例文本。这是很容易捕捉到的东西吗?编辑:我对正则表达式进行了编辑:但是有些人做到了。。。我四处看看,看看能不能得到:)@Mandy8055,在你的输出中——有五个比赛组。我希望有三个比赛小组。编辑op,如果有任何困惑,请道歉——没有;只有一个比赛组,即:<代码>第1组。请看一下组号。啊——我的错误——误读了。在任何情况下,是否可以分离A、B和C匹配?在这种情况下,所有这些都被聚合到一个组中~~是的,这就是我一直试图得到的:)