這是一個非常基本的正則表達式問題,但由於我似乎無法弄清楚爲什麼在某些情況下比賽失敗,我想我會發布它,看看是否有其他人可以指出我錯過了什麼。爲什麼我的正則表達式在數字以0結尾時失敗?
我試圖從形式的字符串拉出2套數字:
12309123098_102938120938120938
1321312_103810312032123
123123123_10983094854905490
38293827_1293120938129308
我用下面的代碼來處理每個字符串:
if($string && $string =~ /^(\d)+_(\d)+$/) {
if(IsInteger($1) && IsInteger($2)) { print "success ('$1','$2')"; }
else { print "fail"; }
}
凡IsInterger()函數如下:
sub IsInteger {
my $integer = shift;
if($integer && $integer =~ /^\d+$/) { return 1; }
return;
}
此函數似乎大多數時間工作,但失敗的隨從ng由於某種原因:
1287123437_1268098784380
1287123437_1267589971660
關於爲什麼這些失敗而其他人成功的任何想法?在此先感謝您的幫助!
什麼你需要IsInteger功能?你的第一個正則表達式只會把一串數字放到'$ 1'和'$ 2'上,不需要測試這個。 if($ string =〜/ ^(\ d +)_(\ d +)/){print「success('$ 1','$ 2')」; } else {print「fail」; }' – ZyX 2010-04-17 17:01:35
你爲什麼要寫'if($ string)'?你不需要這個。 – ZyX 2010-04-17 17:04:24
@ZYZ - 好點。我繼續並更新了該功能。 – 2010-04-17 17:05:16