所以我做的是统计的git仓库的程序,但我有麻烦了一定的正则表达式工作。基本上,我有一个字符串,它看起来像这样:使用正则表达式来解析在Perl
my $string = "5 2 gitc"
和正则表达式看起来像这样:
my ($added, $removed) = $string =~ /([0-9]*) *([0-9]*) *[a-z]*/;
我的目标是存储的第一个数字为$添加和第二号$已删除,但由于某种原因没有价值被存储在$删除。所以,如果我使用print语句:
print "-$added $removed-\n";
输出的样子:
-5 -
当我测试的是对正则表达式101我捕获组的正则表达式看起来做工精细,所以我种难倒至于为什么它不起作用。任何人都可以看到我的正则表达式的问题吗?
是否有可能有一个制表符?当我在本地运行这两行(确保$字符串中的空格字符)时,它可以工作。即我得到“-5 2-” – Marty
数字是可选的还是应该肯定在那里?如果他们应该总是在那里,那么尝试使用'+'而不是'*',就像这样:'/([0-9] +)+([0-9] +)+ [a-z] + /'。与'+'匹配的可能方式较少。 –
@Marty,这是一个非常好的主意来检查。修改我的建议:'/([0-9] +)[\ t] +([0-9] +)[\ t] + [AZ] + /' –