Perl的模式匹配

2021-05-25 00:00:33 字數 1224 閱讀 9459

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...