顯示廣告
隱藏 ✕
看板 uefacool
作者 uefangsmith (唉呦!不錯哦~)
標題 [Perl] Perl常規表達式(1)
時間 2015-09-09 Wed. 11:02:10


http://fanqiang.chinaunix.net/a4/b3/20010416/161350_b.html

Perl常規表達式(1)
不詳 (2001-04-16 16:13:50)
   
如果在Unix中曾經使用過sde,awk,grep這些指令的話,相信對 Perl 語言中的常規表達式(Regular Expression)應該不會感到陌生才對。在Perl語言中因為有這個功能,所以對字符串的處理能力是非常強有力的。Regular Expression可視為用來處理字符串的一種模式(pattern),其使用的格式為

/pattern/。在Perl語言的程序中,經常可以看到類似語法的應用,在CGI程序設計中也不例外。只要能夠善用常規表達式的話,要處理任何難的字符串皆可迎刃而解,在本章中筆者會用深入淺出的方式來介紹Regular Expression的用法。

  常規表達式(Regular Expression)也譯作正則表達式或文字處理模式,是指定模式的一種方法,這種模式對文本進行篩選,只匹配特定的字符串。一旦匹配到了一個字符串,就可以從大量的文本中將其抽取出來,或者利用另一個字符串來替代這個字符串。

  常規表達式也是初學Perl者的難點所在,但一旦掌握其語法,它們就擁有幾乎無限的模式匹配能力,而且Perl編程的大部分工作都是掌握常規表達式。

  一 常規表達式中,/pattern/常用到的語法

-------------------------------------------------------------------------------- /pattern/     結果  

       除了換行字符\n外,找尋只有一個字符的字符串

x?       找尋0個或是1個x字符

x*       找尋0個或是0個以上的x字符  

.*       找尋0個或是0個以上的任何字符

x+       找尋0個或是1個以上的x字符  

.+       找尋1個或是1個以上的任何字符

{m}      找尋剛好是m個個數指定的字符

{m,n}     找尋在m個數個數以上,n個個數以下指定的字符

{m,}      找尋m個個數以上指定的字符

〔〕      找尋符合〔〕內的字符  

〔^〕      找尋不符合〔〕內的字符

〔0-9〕     找尋符合0到9的任何一個字符

〔a-z〕     找尋符合a到z的任何一個字符

〔^0-9〕     找尋不符合0到9的任何一個字符  

〔^a-z〕     找尋不符合a到z的任何一個字符

^     找尋字符開頭的字符

$     找尋字符結尾的字符

\d     找尋一個digit(數字)的字符,和〔0-9〕語法一樣

\d+     找尋一個digit(數字)以上的字符串,和〔0-9〕+語法一樣

\D     找尋一個non-digit(非數字)的字符,和〔^0-9〕語法一樣

\D+     找尋一個non-digit(非數字)以上的字符,和〔^0-9〕+語法一樣

\w     找尋一個英文字母或是數值的字符,和〔a-zA-Z0-9〕語法一樣  

\w+     找尋一個以上英文字母或是數值的字符,和〔a-zA-Z0-9〕+語法一樣

\W     找尋一個非英文字母,數值的字符,和〔^a-zA-Z0-9〕語法一樣

\W+     找尋一個以上非英文字母,數值的字符,和〔^a-zA-Z0-9〕+語法一樣

\s     找尋一個空白的字符,和〔\n\t\r\f〕一樣

\s+     找尋一個以上空白的字符,和〔\n\t\r\f〕+一樣  

\S     找尋一個非空白的字符,和〔^\n\t\r\f〕一樣  

\S+     找尋一個以上非空白的字符,和〔^\n\t\r\f〕+一樣

\b     找尋一個不以英文字母,數值為邊界的字符串

\B     找尋一個以英文字母,數值為邊界的字符串

a|b|c     找到符合a字符或是b字符或是c字符的字符串  

abc     找到一個含有abc的字符串

(pattern)  ()這個符號是會記憶所找尋到的字符,是一個很實用的語法  

      第一個()內所找到的字符串變成$1這個變量或是\1變量  

      第二個()內所找到的字符串變成$2這個變量或是\2變量  

  以此類推,筆者會在下一小節中詳細介紹它的用法 /pattern/i i這個參數是代表忽略英文大小寫的意思,也就是在找尋字符 串的時候,不會去考慮英文的大小寫 \ 如果要在pattern模式中找尋一個有特殊的意義的字符,要在 這個字符前加上\這個符號,這樣才會讓這個特殊字符失效

二 常規表達式(Regular Expression)的簡單范例  

  看了上一小節文字處理模(Regular Expression)之的,初學者對這個語法的應用可能還不是很清楚,所以筆者會在這一小節中,舉出一些在常規表達式中常用的范例給大家看看: 范例     說明 /perl/     找到含有perl的字符串

/^perl/     找到開頭是perl的字符串

/perl$/     找到結尾是perl的字符串

/c|g|i/     找到含有c或g或i的字符串

/cg{2,4}i/     找到c面跟著2個到4個g,再跟著i的字符串

/cg{2,}i/     找到c面跟著2個以上g,再跟著i的字符串

/cg{2}i/     找到c面跟著2個g,再跟著i的字符串  

/cg*i/     找到c面跟著0個或多個g,再跟著i的字符串,如同/cg{0,1}i/  

/cg+i/     找到c面跟著一個以上g,再跟著c的字符串,如同/cg{1,}i/  

/cg?i/     找到c面跟著0個或是一個g,再跟著c的字符串,如同/cg{0,1}i/  

/c.i/     找到c面跟著一個任意字符,再跟著i的字符串  

/c..i/     找到c面跟著二個任意字符,再跟著i的字符串

/〔cgi〕/     找到符合有這三個字符任意一個的字符串

/〔^cgi〕/     找到沒有這三個字符中任意一個的字符串  

/\d/     找尋符合數值的字符串

       可以使用/\d+/來表示一個或是多個數值的字符串

/\D/     找尋符合不是數值的字符串  

       可以使用/\D+/來表示一個或是更多個非數值的字符串

/\w/     找尋符合英文字母,數值的字符串

      可以使用/\w+/來表示一個或是更多個英文字母,數值的字符串

/\W/     找尋符合非英文字母,數值字符的字符串  

       可以使用/\W+/來表示一個或是更多個非英文字母,數值的字符串

/\s/     找尋符合空白的字符串

       可以使用/\s+/來表示一個或是更多個空白字符的字符串

/\S/     找尋符合不是空白的字符串

       可以使用/\S+/來表示一個或是更多不是空白的字符的字符串  

/\*/     找尋符合*這個符號的字符串,因為*在常規表達式中有它的特殊意思,所以要在這個特殊符號前加上\這個符號,這樣才會讓這個特殊字符失效

/abc/i     找尋符合abc的字符串而且不考慮這些符合字符串的大小寫  

--
※ 作者: uefangsmith 時間: 2015-09-09 11:02:10
※ 編輯: uefangsmith 時間: 2015-09-09 11:03:26
※ 看板: uefacool 文章推薦值: 0 目前人氣: 0 累積人氣: 85 
分享網址: 複製 已複製
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇