regex 编写正则表达式以查找失败测试的名称

xtupzzrd  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(165)

我正在尝试针对我们的日志编写一个正则表达式,以匹配下面文本的粗体部分。
stage\n[myenv-01] [Pipe] [MySearchTests] {(MySearchTests Tests)\n[myenv-01] [Pipe] [MySearchTests] tool\n [myenv-01][MyPortalTests] \n[myenv-01][MyPortalTests] Tests.MyPortal.MakeAWidgetTests > Validate WidgetUser@email.com is allowed to create a widget PASSED\n[myenv-01][MyPortalTests] \n[myenv-01][MyPortalTests] Tests.MyPortal.MakeAWidgetTests > Validate NonWidgetUser@email.com role is not允许创建小部件已开始\n正在扫描widget-service/path/to/widget-service.jar...\n[myenv-01] [WidgetApp] \n[myenv-01][WidgetApp] Tests.WidgetPortal.LoginTest**> loginWithWidgetUser FAILED\n**[myenv-01] [WidgetApp]
测试.等待.WaitTimeoutException at WidgetSpec.groovy:30\n[myenv-01] [WidgetApp]
下面是我的正则表达式:

>\s(.*)\sFAILED\\n

它目前与下面的粗体文本匹配。
stage\n[myenv-01] [Pipe] [MySearchTests] {(MySearchTests Tests)\n[myenv-01] [Pipe] [MySearchTests] tool\n [myenv-01][MyPortalTests] \n[myenv-01][MyPortalTests] Tests.MyPortal.MakeAWidgetTests > Validate WidgetUser@email.com is allowed to create a widget PASSED\n[myenv-01][MyPortalTests] \n[myenv-01][MyPortalTests] Tests.MyPortal.MakeAWidgetTests**> Validate NonWidgetUser@email.com role is not允许创建小部件已开始\n正在扫描widget-service/path/to/widget-service.jar...\n[myenv-01] [WidgetApp] \n[myenv-01][WidgetApp] Tests.WidgetPortal.LoginTest > loginWithWidgetUser FAILED\n**[myenv-01] [WidgetApp]
测试.等待.WaitTimeoutException at WidgetSpec.groovy:30\n[myenv-01] [WidgetApp]
我怎样才能让它与我在第一个文本blob中加粗的内容相匹配?现在匹配太早了。如果有帮助,如果找到单词PASSED,则可以忽略匹配。基本上,我试图正则化一个失败的测试的名称,我们知道这些名称在大于字符>和短语FAILED之间。我们浏览的文本blob很大,所以正则表达式应该是全局的。

n6lpvg4x

n6lpvg4x1#

实际上,您希望用一个字符类替换当前正则表达式中的.,该字符类 * 肯定 * 包含任何可能在测试名称中的字符,但排除任何不太可能在名称中的字符。
你有很多选择,所有这些都能很好地处理你的输入。根据您对其余日志的经验,判断哪一个是最好的。
>\s(\S+)\sFAILED\\n将匹配任何不包含空格的测试名称,但如果任何测试名称由空格以外的任何东西分隔,则 * 可能 * 匹配比您想要的更多。
>\s((?:(?!\\n).)*)\sFAILED\\n将匹配任何不包含换行符的测试名称,但如果任何行包含多个>字符,则 * 可能 * 匹配比您想要的更多。
>\s(\w+)\sFAILED\\n将匹配仅由字符a-zA-Z0-9_组成的任何测试名称,但如果任何测试名称包含其他字符,则匹配的数量将小于您所需的数量。
>\s([^>]+)\sFAILED\\n将匹配>FAILED之间的所有内容,这 * 可能 * 比您想要的更多。

相关问题