如何使用正则表达式从伊斯坦布尔文本摘要记者中提取测试范围?
How do I extract test coverage from the istanbul text-summary reporter with a regex?
Gitlab CI 要求您指定一个正则表达式来提取语句代码覆盖率(以便他们可以显示它)。考虑到下面的构建输出(使用 jest 和 istanbul),我已经设法做到了:/Statements.*(\d+\%)/
... (other build output)
=============================== Coverage summary ===============================
Statements : 53.07% ( 95/179 )
Branches : 66.67% ( 28/42 )
Functions : 30.99% ( 22/71 )
Lines : 50.96% ( 80/157 )
================================================================================
... (other build output)
这会突出显示部分 Statements : 53.07%
(请参阅此处:http://regexr.com/3e9sl)。但是,我只需要匹配 53.07 部分,我该怎么做?
I need to match only the 53.07 part,
使用惰性 .*?
,添加 (?:\.\d+)?
也匹配浮点数,并访问捕获组:
var re = /Statements.*?(\d+(?:\.\d+)?)%/;
var str = '... (other build output)\n=============================== Coverage summary ===============================\nStatements : 53.07% ( 95/179 )\nBranches : 66.67% ( 28/42 )\nFunctions : 30.99% ( 22/71 )\nLines : 50.96% ( 80/157 )\n================================================================================\n... (other build output)';
var res = (m = re.exec(str)) ? m[1] : "";
console.log(res);
请注意 Statements.*?(\d+(?:\.\d+)?)%
也允许整数值,而不仅仅是浮点数。
图案说明:
Statements
- 文字字符串
.*?
- 除空格外的零个或多个字符,但尽可能少
(\d+(?:\.\d+)?)
- 第 1 组(您需要的值将被捕获到该组中)捕获 1+ 位数字和可选的 .
序列以及其后的 1+ 位数字
%
- 百分号(如需打印,移至上方括号内)
参见regex demo。
Gitlab CI 要求您指定一个正则表达式来提取语句代码覆盖率(以便他们可以显示它)。考虑到下面的构建输出(使用 jest 和 istanbul),我已经设法做到了:/Statements.*(\d+\%)/
... (other build output)
=============================== Coverage summary ===============================
Statements : 53.07% ( 95/179 )
Branches : 66.67% ( 28/42 )
Functions : 30.99% ( 22/71 )
Lines : 50.96% ( 80/157 )
================================================================================
... (other build output)
这会突出显示部分 Statements : 53.07%
(请参阅此处:http://regexr.com/3e9sl)。但是,我只需要匹配 53.07 部分,我该怎么做?
I need to match only the 53.07 part,
使用惰性 .*?
,添加 (?:\.\d+)?
也匹配浮点数,并访问捕获组:
var re = /Statements.*?(\d+(?:\.\d+)?)%/;
var str = '... (other build output)\n=============================== Coverage summary ===============================\nStatements : 53.07% ( 95/179 )\nBranches : 66.67% ( 28/42 )\nFunctions : 30.99% ( 22/71 )\nLines : 50.96% ( 80/157 )\n================================================================================\n... (other build output)';
var res = (m = re.exec(str)) ? m[1] : "";
console.log(res);
请注意 Statements.*?(\d+(?:\.\d+)?)%
也允许整数值,而不仅仅是浮点数。
图案说明:
Statements
- 文字字符串.*?
- 除空格外的零个或多个字符,但尽可能少(\d+(?:\.\d+)?)
- 第 1 组(您需要的值将被捕获到该组中)捕获 1+ 位数字和可选的.
序列以及其后的 1+ 位数字%
- 百分号(如需打印,移至上方括号内)
参见regex demo。