所以我做的是統計的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] + /' –