如何用Ruby正则表达式提取代码覆盖率结果中的总百分比
从覆盖率报告中提取总百分比的正则方案
先把你的覆盖率报告贴出来方便参考:
Name Stmts Miss Cover Missing ------------------------------------------------------------------- src/global_information.py 8 1 88% 6 src/settings.py 38 0 100% src/storage_backends.py 4 4 0% 1-5 src/urls.py 8 0 100% users/admin.py 1 0 100% users/apps.py 3 3 0% 1-5 users/forms.py 5 0 100% users/models.py 1 0 100% users/tests/tests_views_urls.py 5 0 100% users/urls.py 5 0 100% users/views.py 1 1 0% 1 ------------------------------------------------------------------- TOTAL 79 9 89%
你已经能匹配到TOTAL那一行,现在只需要调整正则来单独提取最后的百分比值,这里给你两种靠谱的方案:
方案1:使用捕获组(兼容性强)
修改你的第一个正则,把百分比部分用括号包裹成捕获组:
TOTAL\s+\d+\s+\d+\s+(\d+\%)
这个正则会匹配TOTAL开头的整行,同时把89%这样的百分比字符串存到第一个捕获组里。你只需要读取这个捕获组的结果,就是你要的总覆盖率百分比。
方案2:使用正向 lookbehind(直接返回目标值)
如果不想处理捕获组,可以用正向断言直接定位到百分比:
(?<=TOTAL\s+\d+\s+\d+\s)\d+\%
这个表达式的逻辑是:匹配数字+%的内容,且这个内容的前面必须是TOTAL加上两个数字段(对应Stmts和Miss的数值)以及对应的空格。这样正则匹配的结果直接就是89%,不需要额外处理。
两种方案都能精准提取目标值,第一种兼容性更好(几乎所有正则引擎都支持),第二种更直接,适合支持变长lookbehind的现代正则环境(比如Python 3.7+、JavaScript ES2018+等)。
内容的提问来源于stack exchange,提问作者Marco Herrarte
相关产品推荐
相关产品推荐

