這篇文章主要為大家展示了“如何在Perl中使用正則表達式”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何在Perl中使用正則表達式”這篇文章吧。
創(chuàng)新互聯建站長期為上千家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態(tài)環(huán)境。為龍游企業(yè)提供專業(yè)的成都網站設計、網站制作、外貿營銷網站建設,龍游網站改版等技術服務。擁有十載豐富建站經驗和眾多成功案例,為您定制開發(fā)。
⑴匹配模式
我們已知在Perl中正則表達式被稱為模式,這種模式(也即正則表達式)可以放在由成對符號(例如()、<>、{}等)或者一對不成對的符號(例如//、!!、^^等)組成的界定符內,并在界定符前用小寫字母指定模式的種類。當然我們不希望界定符和正則表達式的符號有所沖突(如果實在有沖突可以使用反斜杠轉義),事實上最常用的界定符為雙斜杠//。在Perl中有很多處理模式,其中最簡單的為匹配模式m//,或者也可以理解為查找模式。由于正則表達式本身就有匹配的含義,以雙斜杠作為定界符時m可以省略。其他處理模式詳見下一小節(jié)。
$_ = "yabba dabba doo";if (/y(.)(.)\2\1/) { print "It matched!\n";}
運行結果如下所示:
$_ = "yabba dabba doo";if ($_ =~ /y(.)(.)\2\1/) { print "It matched!\n";}
其中=~是表示內容匹配的綁定操作符,其返回值為表示是否成功匹配的布爾值,基于上面的寫法我們可以根據實際需要隨意改變要匹配的變量名稱。
⑵模式修飾符
/abc.*xyz/is #忽略大小寫并使點號匹配任意字符
⑶錨位
$_ = "This is the wilma linebarney is on another linebut this ends in fred";if (/^barney/m) { print "It matched!\n";}
/\Abarney/ #匹配字符串絕對開頭位置的barney/fred\z/ #匹配字符串絕對末尾位置的fred/fred\Z/ #匹配行尾也即換行符前的fred/\A\s*\Z/ #匹配一個空行
/\bfred\b/ #會匹配fred、fred's但是不會匹配afred、fred_s
此外\B則會錨定非單詞邊界,如下所示
/\bfred\B/ #會匹配fred_s 但是不會匹配fred、fred's、afred
⑷變量內插
my $what =;chomp $what;while (<>) { if (/\A($what)/) { print "$_"; }}
⑸捕獲變量
$_ = "Hello there, neighbor";if (/(\S+).*,\s(\w+)/) { print "What I said is:\n$1 $2!\n";}
這些捕獲變量在下一次正則表達式成功匹配之前都是有效的,如果某次匹配失敗,那么捕獲變量里儲存的仍是上一次成功匹配時的數據,這里的匹配成功指的是整個模式的匹配而非捕獲組的匹配,這也是模式匹配以及捕獲變量的使用一般在if和while等布爾值控制結構里面的原因。如果想永遠使用某次捕獲的內容,則可以使用捕獲變量為自定義標量變量賦值。
$_ = "Hello there, neighbor";if (/(?\S+).*,\s(? \w+)/) { print "What I said is:\n$+{name1} $+{name2}!\n";}
以上是“如何在Perl中使用正則表達式”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!