Perl中Regex的用法

來源:互聯網
上載者:User

"." 用來匹配任意一個字元的萬用字元,"\n"分行符號除外

"*" 用來匹配前麵條目出現零次或多次

"+" 用來匹配前麵條目出現一次以上

"?" 用來匹配前麵條目出現一次或者不出現

"()" 用來對字串分組,\1 或 \2 可以反向引用括弧裡的字串,相應的數字表示對應順序的擷取的群組,若要調用()中的擷取的群組,可用$1,$2依次捕獲,也可以用$+{LABEL}標籤形式捕獲

01./(.)\1/ 表示匹配2個連續的字元,比如'aa'02./(\S)\1/ 匹配連續出現2次的非Null 字元03./(.)(.)\2\1/ 可以匹配'abba'04./(.)\g{1}11/ 可以用\g{N},N為數字來表示反向引用,消除歧義05./(?:bronto)?saurus (steak|burger)/ 圓括弧中使用?:表示不對該圓括弧的內容進行捕獲06./(?<name1>\w+) (?:and|or) (?<name2>\w+)/ 用?<LABEL>表示對擷取的群組的引用對於自動捕獲變數,可以用$&表示匹配到的字串,$`表示字串匹配前的欄位,$'表示字串匹配後的欄位,也可以分別用${^MATCH},${^PREMATCH},${^POSTMATCH}表示

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/

轉義元字元,若要匹配"."號本身,需要使用"\"轉義,"\.",對"\"本身匹配,則為"\\"

"|" 表示要麼匹配前面,要麼匹配後面

01./wilma.*fred|fred.*wilma/ 匹配一行中同時出現wilma和fred,前後出現的順序都要考慮到"[a-zA-Z]" 表示一個連續的字元集

01./[A-Z][a-z]+/ 匹配一行中第一個字母大寫後面字母小寫字串"\d" 表示任意一個數位字元集,前提是在ASCII字元集中,相反,"\D"表示否定含義,表示非數字

"\s" 匹配任意空白符,相反,"\S"表示匹配非空白符

"\w" 同"[a-zA-z0-9_]"字元集,代表單詞字元, 相反,"\W"表示非單詞字元

模式比對符"//",事實上等同於"m//","m//"可以替換成"m##","m<>"等等

預設模式比對符中匹配的是"$_"變數

"//i",i表示無關大小寫模式比對

01./Fred/i "//s",s預設轉換模式中的點號為字元集[\d\D],因此點號可以匹配分行符號

01./Barney.*Fred/s 若Barney和Fred之間有分行符號則不影響匹配"//x",x允許在模式中插入任意空白符,增加可讀性

01./ -? [0-9]+ \.? [0-9]* /x "//a", 表示以ASCII字元集的模式比對

01./\w+/a 代表[a-zA-Z0-9_]字元集"//u",表示以unicode字元集的模式比對

01./\w+/u 代表Unicode中定義為單詞的字元"//l",表示以本地化所設定的字元集的模式比對

01./\w+/l 代表locale本地化設定的字元集"\A" 錨位匹配字串的絕對開頭,

01./\Astring/ "\z" 錨位匹配字串的絕對末尾,"\Z" 允許後面出現分行符號

01./string\z/ "//m"可以對多行字串進行匹配,和"$","^"結合使用

01./fred$/m 匹配多行字串中fred結尾的 02./^barney/m 匹配多行字串中barney開頭的"\b" 單詞錨位,

01./\bFred\b/ 匹配一個獨立的單詞Fred,前後不能結合其他字元"=~" 綁定操作符,指定字串和模式進行匹配,若不用綁定操作符,預設對$_變數進行匹配

01.string =~ /expr/ 可以指定匹配的次數

01./a{3,15}/ 匹配a出現的次數為3到15次02./fred{3,}/ 匹配fred出現3次以上替換的用法舉例

01.$_ = "green scaly dinosaur"; 02.s/(\w+) (\w+)/$2, $1/; 將2個字串互換位置,換後為"scaly, green dinosaur"03.s/^/huge,/; 在開頭插入huge,變為"huge,scaly,green dinosaur"04.s/,.*een//; 將第一個逗號到green的所有字元都刪除,變為"huge dinosaur"05.s/\w+$/($`!)$&/; 替換後變為"huge (huge !)dinosaur"06.s/\s+(!\W+)/$1 /; 替換後變為"huge (huge!) dinosaur"07.s/huge/gigantic/; 替換後變為"gigantic (huge!) dinosaur" s///g,/g為全域替換

大小寫替換

01.$_ = "I saw Barney with Fred" 02.s/(Barney|Fred)/\U$1/gi Barney和Fred全部替換為大寫字元03.s/(Barney|Fred)/\L$1/gi Barney和Fred全部替換為小寫字元04.s/(\w+) with (\w+)/\U$1\E with $2/ \U僅對$1進行大寫替換,加了\E則對$1後的字串不進行大寫替換 split操作符,可以將欄位中的以某個特定分隔字元分隔開的字串提取出來並存入列表變數

01.my @buddy = split /:/, "tom:jerry:nico:kid"; 則列表@buddy = ("tom", "jerry", "nico", "kid")02.$some_string = "This is\ta\t\ttest"; 對以多個空白符分隔的欄位03.my @str1 = split /\s+/, $some_string; 可以用\s+表示分隔字元來對欄位提取字串 join函數,將指定的分隔字元插入到不同的字串中

01.my $str2 = join "-", 2,3,4,5,6; 得到的變數$str2為"2-3-4-5-6"

本文出自 “努力為之” 部落格,請務必保留此出處http://carllai.blog.51cto.com/1664997/1176116

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.