perl基本的模式匹配有兩種:
m/pattern/ //只匹配
s/pattern/replacement/ //匹配並替換
其中分隔符反斜槓/可以用任意特殊字元替換(但在m/pattern/簡寫為/pattern/時不能這樣做,換種說法,即若分隔符是反斜槓/,則m/pattern/可簡寫為/pattern/)
模式匹配若成功,則返回true,否則返回false
模式匹配預設的目標變數是$_,如
while()
上面**的作用是將檔案的每一行與pattern匹配,若匹配成功,則列印輸出match
若要指定模式匹配的目標變數,應使用運算子=~,若匹配則運算結果為true,否則為false,如
$a = "hello world";
print "match/n" if($a =~ /hello/);
s/pattern/replacement/在匹配成功後,會替換匹配的部分並賦給目標變數,如
$a = "hello world";
$a =~ s/hello/hi/; //$a的值變為"hi world"
兩個特殊模式:
grep的格式如下
grep expression, list
grep迭代執行list中的每個元素,然後執行expression。在expression中,$_代表list中的元素。若expression返回為真,grep就返回該元素。如
@dogs = qw(greyhound bloodhound terrier mutt chihuahua);
@hounds = grep /hound/, @dogs;
上面**中,@dogs是list,$_代表@dogs中的每個元素,通過模式/hound/匹配,若匹配成功,則grep返回這個元素,並新增到陣列@hounds中
tips:grep不一定要與模式匹配共用,如
@longdogs = grep length($_)>8, @dogs;
上面**將@dogs中長度大於8的元素放在@longdogs中
regular expression中的特殊字元類
perl 模式匹配
一 簡介 模式指在字串中尋找的特定序列的字元,由反斜線包含 def 即模式def。其用法如結合函式split將字串用某模式分成多個單詞 array split line 二 匹配操作符 檢驗匹配是否成功 result var abc 若在該字串中找到了該模式,則返回非零值,即true,不匹配則返回0...
perl正則匹配
字元的種類是一定的,無非是空格,數字,大小寫字母,和perl中定義的元字元,還有本國語言。所以原則上任何格式的字元都能匹配。匹配工具 選擇符號,關鍵字,量詞,斷言,轉義字元 當出現多個字元組成的 非空格字元時候,例如123,45 3 s sdgg 則使用 0 9a za z 若加上 則只能匹配一行中...
perl智慧型匹配
1.perl中 為智慧型匹配,它可以智慧型地根據符號兩側的運算元來確定操作。如要判斷某個元素是否存在於陣列中,不使用智慧型匹配,程式像這樣 my x 2 my array 1,2,3 my flag 0 for array if flag 1 else 使用智慧型匹配,程式像這樣 my x 2 my...