gpt4 book ai didi

javascript - 使用 JavaScript 通过多行获取最近的匹配

转载 作者:行者123 更新时间:2023-11-29 21:12:00 25 4
gpt4 key购买 nike

我有以下 Protractor 测试的输出,我正在尝试解析并查找失败规范的名称:

Specs: /var/lib/jenkins-slave/workspace//tests/js/e2e/ui_e2e/tests/test_one.js
Selenium URL: http://10.20.40.54:4444/wd/hub

..... number of different strings here....

Executed 25 of 25 specs SUCCESS in 1 min 23 secs.
-----
Specs: /var/lib/jenkins-slave/workspace//tests/js/e2e/ui_e2e/tests/test_two.js

..... number of different strings here....

UnknownError: Due to a previous error, this job has already finished. You can learn more at

我正在使用以下正则表达式:

(?:Specs:)(?:[\s\S])*(?=UnknownError(.*?))

但是,它匹配第一个字符串中太宽的部分,用 test_two.js 吞没了字符串。

我怎样才能避免吞咽和缩小比赛让它像这样:

Specs: /var/lib/jenkins-slave/workspace//tests/js/e2e/ui_e2e/tests/test_two.js

..... number of different strings here....

UnknownError: Due to a previous error, this job has already finished. You can learn more at

最佳答案

我认为您不是在寻找“最近”的匹配项,而是在寻找开始和结束定界符之间的最短“窗口”。

你可以使用

/^Specs:(?:(?!^Specs:)[\s\S])*UnknownError:\s*(.*)/gm

或其更有效的展开变体:

/^Specs:.*(?:\r?\n(?!Specs:).*)*UnknownError:\s*(.*)/gm

参见 regex demo

详细信息:

  • ^ - 行首
  • Specs: - 文字字符序列
  • (?:(?!^Specs:)[\s\S])* - 匹配任何不启动行开始序列的字符的缓和贪婪标记, Specs:(在展开的变体中,.*(?:\r?\n(?!Specs:).*)* subpattern)
  • UnknownError: - 一个子字符串
  • \s* - 0+ 个空格
  • (.*) - 第 1 组捕获除换行符以外的任何零个或多个字符。

关于javascript - 使用 JavaScript 通过多行获取最近的匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41377196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com