从特定行获取百分比的Ruby正则表达式

从特定行获取百分比的Ruby正则表达式,ruby,regex,Ruby,Regex,我有以下输出: Name Stmts Miss Cover Missing --------------------------------------------------------------- src/global_information.py 8 1 88% 6 src/settings.py 38 0 100% sr

我有以下输出:

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%
我需要得到总的百分比,89%。我尝试以下两种正则表达式:

TOTAL\s+\d+\s+\d+\s+\d+\%


(?
awk'/TOTAL/{print$4}'
awk'/TOTAL/{print$4}'
您可以使用这样的正则表达式:

TOTAL.*?(\d+)%

或者,如果要捕获
%
,则

TOTAL.*?(\d+%)

然后从捕获组抓取内容
$1

您可以使用如下正则表达式:

TOTAL.*?(\d+)%
str=<<_
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%
_

str[/^TOTAL.*?\K\d+%/] #=> "89%

或者,如果要捕获
%
,则

TOTAL.*?(\d+%)


然后从捕获组抓取内容
$1

str=
str=您在作业中使用的工具?在正则表达式中提取通常使用捕获组。您在作业中使用的工具是什么?在正则表达式中提取通常使用捕获组。谢谢,问题是我没有访问任何工具的权限,这需要在r中实现正则表达式..@MarcoHerrarte,你试过没有括号的正则表达式吗?
TOTAL.*\d+%
谢谢你,\K节省了我的时间,正如你在我接受的答案中所看到的那样!Marco,如果不清楚,这个答案是正确的。对,这有助于捕获群成员。谢谢@Federicopiazza谢谢,问题是我没有访问任何ols,这需要在正则表达式中实现。@MarcoHerrarte,您是否尝试过不带括号的正则表达式?
TOTAL.*\d+%
谢谢您,\K正如您在我接受的答案中所看到的那样,节省了我的时间!Marco,如果不清楚,这个答案是正确的。对,这有助于捕获群成员。谢谢@Federicopiazza这当然提供了des是一个
awk
解决方案,但OP需要Ruby的正则表达式解决方案。请添加一些解释性文本。如果表达式周围有一对反勾,则可以在Ruby程序中执行它:
`awk'/TOTAL/{print$4}'test`#=>“89%\n”
。要摆脱换行符,请在结束的反勾号后添加
.chomp
。调用系统程序的各种方法在的回答中进行了讨论。这当然提供了
awk
解决方案,但OP需要Ruby的正则表达式解决方案。请添加一些解释性文本。如果用一对反勾号围绕表达式,则可以执行在Ruby程序中使用它:
`awk'/TOTAL/{print$4}test`#=>“89%\n”
。要摆脱换行符,请在结束的倒勾后添加
.chomp
。调用系统程序的各种方法在对的回答中进行了讨论。太棒了!谢谢太棒了!谢谢
str=<<_
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%
_

str[/^TOTAL.*?\K\d+%/] #=> "89%