2015-05-07 85 views
6

我完全新的Perl和嘗試設計一個詞法分析器,我所遇到的含義是:甚至可以通過多個網站我不明白的打算後什麼是QR的//在Perl

my @token_def = 
(
     [Whitespace => qr{\s+},  1], 
     [Comment => qr{#.*\n?$}m, 1], 
); 

含義。

+3

http://perldoc.perl.org/functions/qr html的 – Mat

回答

4

qr//在「Regexp Quote-Like Operators」部分記錄在perlop中。

就像qq"..."又名"..."允許你構造一個字符串,qr/.../允許你構造一個正則表達式。

$s = "abc";  # Creates a string and assigns it to $s 
$s = qq"abc"; # Same as above. 
print("$s\n"); 

$re = qr/abc/; # Creates a compiled regex pattern and assigns it to $x 
print "match\n" if $s =~ /$re/; 

qr/.../引號規則非常相似qq"..."的。唯一的區別是\後跟一個非單詞字符不變。

7

qr//是適用於模式匹配和相關活動的引用類運算符之一。

perldoc

這個操作符引號(以及可能編譯)其作爲正則表達式STRING。 STRING的插入方式與m/PATTERN /中的PATTERN相同。如果使用'作爲分隔符,則不執行插值。

從​​:

的QR //運營商創造一流的正則表達式。插值他們進入比賽運營商使用它們:

my $hat = qr/hat/; 
say 'Found a hat!' if $name =~ /$hat/; 

...或多個regex對象組合成複雜的圖案:

my $hat = qr/hat/; 
my $field = qr/field/; 

say 'Found a hat in a field!' 
if $name =~ /$hat$field/; 

like($name, qr/$hat$field/, 
      'Found a hat in a field!');