从特定行获取百分比的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%