perl語言的強大之處就在于他的正則表達式,Perl的正則表達式的三種形式蜈亩,分別是匹配蒸眠,替換和轉(zhuǎn)化:
- 匹配:m//(還可以簡寫為//,略去m)
- 替換:s///
- 轉(zhuǎn)化:tr///
匹配
語法表示: m// (m可以忽略不寫)
#!/usr/bin/perl
$bar = "I am runoob site. welcome to runoob site.";
if ($bar =~ /run/){
print "第一次匹配\n";
}else{
print "第一次不匹配\n";
}
元字符
特殊字符叫做元字符,比如點號“.”燃乍,它是任何單字符的通配符唆樊,如果要表示點號本身需要在前面加上反斜杠“\”。
*:表示前面內(nèi)容的零次或多次
+: 表示匹配前一個條目一次以上
刻蟹?:表示前一個內(nèi)容是可有可無的
模式分組
用圓括號()來表示分組逗旁,括號里的內(nèi)容表示整體。使用圓括號可以對部分字符進行重新引用和反引用舆瘪∑В“\1”、“\2”就是在使用反向引用英古,反斜線后面的數(shù)字和括號的組號匹配淀衣。
$_="abba";
if ($_=m /(.)\1/){
print "It matched !"
}
#和bb匹配
$_ = "yabba dabba doo ";
if ($_=m /y(.)(.)\2\1/){
print "It matched !"
}
#和abba匹配上
如何區(qū)分哪個括號是第幾組?
只要數(shù)左括號的序號就可以
$_="yabba dabba doo";
if ($_=m /y((.)(.)\3\2) d\1/){
print "It matched !"
}
#匹配到abba dabba
擇一匹配
豎線(|)表示左邊或者右邊匹配都可以召调。
模式匹配修飾符
模式匹配有一些常用的修飾符膨桥,如下表所示:
正則表達式變量
perl處理完后會給匹配到的值存在三個特殊變量名:
$`: 匹配部分的前一部分字符串
$&: 匹配的字符串
$': 還沒有匹配的剩余字符串
錨位
脫字符(^)表示字符串的開頭
美元符($)表示字符串的結(jié)尾
\b 表示單詞邊界錨位,匹配任何單詞的首尾
\B表示非單詞邊界錨位
綁定操作符=~
默認情況下模式匹配的對象是$_,綁定操作符=~則可以用右邊的模式匹配左邊的字符串唠叛。
捕獲變量
使用圓括號表示不同的模式組時只嚣,也啟動了正則表達式處理引擎的捕獲功能,有幾個括號就進行幾次捕獲艺沼,捕獲的內(nèi)容暫存在2變量中,如果想關(guān)閉圓括號的捕獲功能障般,則使用(环础?:)形式