用于捕获 Maven 测试输出的正则表达式
Regex to capture Maven test output
当我 运行 我的测试时,我有这个 Maven 输出:
...
[INFO]
[ERROR] Tests run: 77, Failures: 0, Errors: 2, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 42:09 min
[INFO] Finished at: 2022-02-25T10:40:21Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5:test (default-test) on project ***-***-******-*****: There are test failures.
[ERROR]
...
我想用正则表达式或其他方式捕获这一行:
Tests run: 77, Failures: 0, Errors: 2, Skipped: 0
我不需要准确地捕捉它,但至少是一般区域,因为每个测试 class 都会生成自己的测试摘要 运行,通过等
到目前为止我想出的正则表达式是:
((?<=\[ERROR\]).*\n).*((?=BUILD).*\n)
由于某些原因它不起作用。
我该怎么做?
你可以使用
\[ERROR](.*)(?:\n(?!.* BUILD\b|\[ERROR]).*)*\n.* BUILD\b
在部分中,模式匹配:
\[ERROR\]
匹配 [ERROR]
(.*)
捕获组1,匹配整行
(?:
非捕获组
\n
匹配一个换行符
(?!
否定前瞻断言是正确的不是
.* BUILD\b
匹配 BUILD
行
|
或
\[ERROR]
匹配 [ERROR]
)
关闭前瞻
.*
匹配整行
)*
关闭非捕获组并可选择重复
\n.* BUILD\b
匹配一个换行符和 BUILD
的行
当我 运行 我的测试时,我有这个 Maven 输出:
...
[INFO]
[ERROR] Tests run: 77, Failures: 0, Errors: 2, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 42:09 min
[INFO] Finished at: 2022-02-25T10:40:21Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5:test (default-test) on project ***-***-******-*****: There are test failures.
[ERROR]
...
我想用正则表达式或其他方式捕获这一行:
Tests run: 77, Failures: 0, Errors: 2, Skipped: 0
我不需要准确地捕捉它,但至少是一般区域,因为每个测试 class 都会生成自己的测试摘要 运行,通过等
到目前为止我想出的正则表达式是:
((?<=\[ERROR\]).*\n).*((?=BUILD).*\n)
由于某些原因它不起作用。
我该怎么做?
你可以使用
\[ERROR](.*)(?:\n(?!.* BUILD\b|\[ERROR]).*)*\n.* BUILD\b
在部分中,模式匹配:
\[ERROR\]
匹配[ERROR]
(.*)
捕获组1,匹配整行(?:
非捕获组\n
匹配一个换行符(?!
否定前瞻断言是正确的不是.* BUILD\b
匹配BUILD
行|
或\[ERROR]
匹配[ERROR]
)
关闭前瞻.*
匹配整行
)*
关闭非捕获组并可选择重复\n.* BUILD\b
匹配一个换行符和BUILD
的行