解析Perl正則表達式用法
本文和大家重點討論一下Perl正則表達式的概念,Perl正則表達式有很多值得學(xué)習(xí)的地方,很多語言如Java設(shè)計正則式支持的時候都參考Perl正則表達式。本文介紹Perl正則表達式中最基本、最常用的部分。
Perl正則表達式初步
Perl語言的Perl正則表達式功能十分強大,基本上是常用語言中***大的,很多語言如Java設(shè)計正則式支持的時候都參考Perl正則表達式。本文介紹Perl正則表達式中最基本、最常用的部分。
一、Perl正則表達式運算符
=~Perl正則表達式匹配運算符,左邊是待匹配字符串,右邊是Perl正則表達式,匹配結(jié)果設(shè)置在$1,$2等變量中,在scaler上下文中,成功匹配返回匹配個數(shù),否則返回false。例如$var=~/foo/;
!~Perl正則表達式匹配運算符,和=~不同的是它忽略匹配結(jié)果,且返回值相反。例如$var!~/foo/;
Perl正則表達式運算符右邊是Perl正則表達式,有如下三種形式:
1.匹配模式m/pattern/igmsoxc
m表示match,pattern是正則式內(nèi)容,分隔符/可以用任意其他字符如#替換,igmsoxc是可選的參數(shù),意義如下:
i忽略大小寫
g匹配所有符合的(默認是匹配***個符合的)
m多行模式,^和$分別匹配行的開始和結(jié)尾(默認匹配字符串的開始和結(jié)尾)
s單行模式,“.”匹配“\n”(默認不匹配)
ocompilepatternOnce
xeXtendedlegibility-freewhitespaceandcomments
cdon'tresetposonfailedmatcheswhenusing/g
2.存儲模式qr/pattern/imsox
qr將Perl正則表達式存儲到一個變量中,這樣可以反復(fù)使用,可選項意義與m相同
3.替換模式s/pattern/replacement/igmsoxe
s代表substitutes,將匹配的模式pattern替換為replacement,多了一個可選項:
e將replacement作為一個表達式執(zhí)行
4.一次性匹配模式?pattern?
和m/pattern/相同,但是只進行一次匹配,?不能用其他分隔符替換
二、Perl正則表達式中基本語法元素
\字符轉(zhuǎn)義
.匹配除\n外的任意字符
^匹配行或字符串開頭
$匹配行或字符串結(jié)尾
*0個或多個
+1個或多個
?0個或1個
{...}指定個數(shù)
[...]字符類,匹配括號中的任意一字符
(...)匹配組,匹配后可以用$1,$2等獲取相應(yīng)的匹配組
(?:...)聚集,匹配后不能$1,$2等獲取相應(yīng)的匹配組,速度會快些
|前者或后者,一般和括弧配合使用
\1,\2...正則式中反引用匹配組
三、Perl正則表達式中常見轉(zhuǎn)義字符
\aAlarm(beep)
詳細出處參考:http://www.itqun.net/content-detail/93504.html
- \eEscape
- \fFormfeed
- \nNewline
- \rCarriagereturn
- \tTab
- \037AnyoctalASCIIvalue
- \x7fAnyhexadecimalASCIIvalue
- \x{263a}Awidehexadecimalvalue
- \cxControl-x
- \N{name}Anamedcharacter
- \lLowercasenextcharacter
- \uTitlecasenextcharacter
- \LLowercaseuntil\E
- \UUppercaseuntil\E
- \QDisablepatternmetacharactersuntil\E
- \EEndcasemodification
- \bwordboudariy
四、Perl正則表達式中字符類
[...]匹配括號中的任意一個字符,但是當***個字符是^時是相反的,匹配除了括號中的字符外的任意字符。另外還有a-z這樣的簡寫方式代替a到z的所有字符。例如:
- [amy]Match'a','m'or'y'
- [f-j]Dashspecifies"range"
- [f-j-]Dashescapedoratstartorendmeans'dash'
- [^f-j]Caretindicates"matchanycharacter_except_these"
一些字符類有更簡單的表達方式,如:
- \dAdigit[0-9]
- \DAnondigit[^0-9]
- \wAwordcharacter[a-zA-Z0-9_]
- \WAnon-wordcharacter[^a-zA-Z0-9_]
- \sAwhitespacecharacter[\t\n\r\f]
- \SAnon-whitespacecharacter[^\t\n\r\f]
【編輯推薦】