大多數我看到的正則表達式匹配$line=~ m/dog/
,但是一旦找到匹配項,我該如何提取該值才存儲在變量中?perl - 正則表達式幫助匹配單個字符串中的多個值
/home/test/dog/[email protected]
我想/home/test/
後匹配dog
或任何3個字母的單詞,並把在一個變量。然後在同一個字符串上匹配一個特定的名稱,如ucsb
,並將其放在另一個變量中,以便我可以將它們打印出來。謝謝。
大多數我看到的正則表達式匹配$line=~ m/dog/
,但是一旦找到匹配項,我該如何提取該值才存儲在變量中?perl - 正則表達式幫助匹配單個字符串中的多個值
/home/test/dog/[email protected]
我想/home/test/
後匹配dog
或任何3個字母的單詞,並把在一個變量。然後在同一個字符串上匹配一個特定的名稱,如ucsb
,並將其放在另一個變量中,以便我可以將它們打印出來。謝謝。
使用兩對捕捉括號。
my $pattern = qr{/home/test/(\w{3}).*[.](\w+)[.]edu};
while (my $line = <>) {
my ($three_letter_word, $school) = $line=~/$pattern/;
print "$three_letter_word | $school\n";
}
看看File::Basename - 將文件路徑解析爲目錄,文件名和後綴。 例如:
use strict;
use File::Basename;
my $file = '/home/test/dog/[email protected]';
my($filename, $directories) = fileparse($file);
文件名會給你[email protected]
和 目錄會給你/home/test/dog/
要提取值或捕捉的值,你必須把圓形支架在你的正則表達式像
$directories =~ m/(dog)/;
my $extract_value = $1;
請參閱Extracting matches瞭解如何提取匹配字符串部分的更多細節。
這也是一個很好的答案。感謝您的幫助和鏈接到文檔。 – jdamae 2010-12-10 05:55:30
謝謝。這很好。 – jdamae 2010-12-10 05:54:37