我需要從字符串捕獲子字符串。爲此,我使用了一個Regx,但在我的代碼中沒有按預期工作。爲什麼同樣的正則表達式有差異行爲
奇怪的是,如果我不是從用戶正在輸入相同至REGx工作正常:
這裏是我的代碼:
案例一:做工精細
use strict;
use warnings;
my $path = "\\\\xyz\\abc\\def\\Logs\\LA.1.0\\04.04.04.128.281\\September-10---15.28.5\\wxzLogs\\PostBootLogs\\Complete_Logs_2014091016000\\ANR\\traces.txt_20140910204706";
my ($captured) = $path =~ /(.+?) \\PostBootLogs/x;
print "$captured\n";
Cas-2不工作:
my $path = $ARGV[0];
copylog($path);
sub copylog {
print "Before_path -> $path\n";
my ($captured) = $path =~ /(.+?) \\PostBootLogs/x;
print "After_path -> $path\n";
}
在這兩種情況下,我使用的是相同的字符串。我需要在第二種情況下使用regx,所以任何人都可以告訴我第二種情況有什麼問題。
你如何調用腳本?請顯示完整的命令行。 – choroba 2014-09-12 11:30:42
您正在打印出第二個腳本中的'$ path',而不是'$ captured'。 '$ path'具有原始數據,'$ captured'具有匹配的部分。 – 2014-09-12 11:34:14
對不起,提問這樣愚蠢的問題,這是我的錯誤。我沒有注意到我不打印適當的可讀性。 – user59053 2014-09-12 11:40:35