perl正規表示式

2022-09-06 15:47:03 字數 2408 閱讀 6224

第乙個元字元是圓點(.)。在正規表示式中,圓點用於匹配除了換行符外的任何單個字元。

最簡單的萬用字元是+元字元。+用於使前面的字元與後面的字元至少匹配一次,也可以任意次地進行匹配。

元字元*使得前面的字元可以進行0次或多次匹配。

元字元?用於使前面的字元進行0次或一次匹配(但是不能超過一次)

正規表示式中常用的乙個萬用字元是. *。可以用它來匹配任何東西

p a t。這裡的n是匹配的最小次數,m是匹配的最大次數,p a t是你試圖量化匹配的字元或字元組。

/ x / x至少出現5次,但是不超過1 0次。

/ x / x至少出現9次,也可能出現更多次。

/ x / x最多出現4次,也可能根本不出現。

/ x / x必須正好出現8次,不能多,也不能少。

perl的正規表示式擁有這樣乙個工具,它稱為字元類。

[ abcde ] 用於匹配a、b、c、d或e中的任何乙個字元

[ a-e ] 與上面相同。用於匹配a、b、c、d或e中的任何乙個字元

g 用於匹配大寫字母g或小寫字母g

[ 0-9 ] 用於匹配乙個數字

[ 0-9 ] + 用於順序匹配乙個或多個數字

[a-za-z] 用於匹配任何一組5個字母字元

[*!@#$%&()] 用於匹配這些符號中的任何乙個

最後乙個例子非常有意思,因為在字元類中,大多數萬用字元會失去它們的「萬用字元性質」,換句話說,它們的執行特性將類似其他任何乙個普通字元。因此,* 實際上代表乙個普通的*字元。

如果插入記號( ^)作為字元類中的第乙個字元,該字元類將變為無效。也就是說,該字元類可以匹配不在該字元類中的任何單個字元。如下面的例子所示:

/[^a-z]/ 表示匹配a-z之外的任意乙個字元。

p e r l包含了某些常用字元類的快捷方式。它們用反斜槓和萬用字元來表示,如表6 - 2所示。

下面是一些例子:

/\d/      match five digits

/\s\w+\s/   match a group of characters surrounded by white space

模式      用於匹配

\ w       乙個單詞字元,與[ a - z a - z 0 - 9 _ ]相同

\ w       乙個非單詞字元(與\ w相反)

\ d       乙個數字,與[ 0 - 9 ]相同

\ d       乙個非數字

\ s       乙個白空間字元,與[ \ t \ f \ r \ n ]相同

\ s       乙個非白空間字元

在列表上下文中,匹配運算子返回括號中匹配的表示式的各個部分的乙個列表。每個加括號的值都是列表的返回值,如果模式不包含括號,則返回1。請看下面這個例子:

($fruit,$color)=/(.*)\sis(.*)/; #注意這裡匹配用的是=,而不是=~。

($fruit,$color)=$_=~m/(.*)\sis(.*)/; #或者可以這樣寫,不知道為啥

最後兩個萬用字元(相信你可能認為萬用字元是沒有止境的)是位置萬用字元。

/ ^ h e l p / 只只匹配以h e l p開頭的行

/ ^ f r a n k l y. * d a r n $ / 只用於匹配以f r a n k l y開頭和以d a r n結尾的行。它們中間的所有字元也進行匹配

/ ^ h y s t e r i a $ / 只用於匹配只包含單詞h y s t e r i a的行

/ ^ $ / 只用於匹配一行的開頭,緊接著匹配該行的結尾。它只用於匹配空行

/ ^ / 只用於匹配帶有開頭字元的行(所有行)。/ $ /的作用也相同

替換運算子s / / /

$ch2name=~s/0\.w**/1\.w**/;

修飾符與多次匹配

替換運算子(s / / /)和匹配運算子(m / /)能夠在匹配正規表示式時不考慮大小寫字母,如果匹配項的後面跟乙個字母i的話。

/luckydog/i

用於匹配和替換的另乙個修飾符是全域性匹配修飾符g。正規表示式(或替換)的匹配操作不是一次完成的,它要重複通過整個字串,第一次匹配後,立即進行下一次匹配(或替換)。在列表上下文中,全域性匹配修飾符可使匹配**返回乙個放在括號中的正規表示式的各個部分的列表:

$_="one fish, two frog,three fred,red foul";

@f=m/\w(f\w\w\w)/g;

該模式首先匹配乙個非單詞字元,然後匹配字母f,接著匹配4個單詞字元。字母f和4個單詞用括號分組。該表示式被計算後,變數@ f將包含4個元素,即f i s h、f r o g、f r e d和f o u l。

p e r l中的乙個常見操作是搜尋陣列,尋找某些模式。p e r l有乙個特殊的函式,可以用來進行這項操作,這個函式稱為g r e p。g r e p函式的句法如下:

grep expression,list

Perl 正規表示式

正規表示式文中列表 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個後向引用 或乙個八進位制轉義符。匹配輸入字串的開始位置。如果設定了 regexp 物件的multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束位置。如果設定了 regexp 物件的multiline 屬性...

Perl正規表示式

元字元 元字元的含義是具有特殊含義的字元,即為元字元,元字元包括 點號能夠匹配所有的單字元,但是換行字元除外 n 簡易量詞 記載匹配正規表示式的時候有些需要重複的字元或者字串,我們在表示這種重複的形式的時候,即是量詞,我們知道的量詞有 表示至少重複一次,表示重複一次或者一次 以上,指的是重複一次或者...

perl 正規表示式

匹配 m 還可以簡寫為 略去 m 替換 s 轉化 tr 這三種形式一般都和 或 搭配使用 其中 表示相匹配,在整條語句中讀作 does,表示不匹配,在整條語句中讀作 doesn t 並在左側有待處理的標量變數。如果沒有該變數和 操作符,則預設為處理 變數中的內容。舉例如下 str i love pe...