perl常用正規表示式集合

2022-09-02 15:51:10 字數 2328 閱讀 3786

個人常用正規表示式:

s

/^\s

+//

s/\s

+$//

s

/^\s

+|\s+$

//g

/.*/s

這裡/s表示連換行符也匹配,因為.是不匹配換行符的,所以上面的表示式匹配任意字元。下面看第二種方法,perl中的元字元.能匹配所有單個字元,但是不能匹配換行符,如果要匹配的文字含有換行符,那麼.將無法勝任,比如下面的xml檔案。

<

response

>

<

code

>

200code

>

<

description

>

success

description

>

response

>

如果想取得response結點中的內容,那麼下面的表示式無法完成工作,因為兩行文字中間有乙個換行符。

<

response

>

(.*)

<

\/response

>

那麼如何匹配任意字元呢?可以用下面的正規表示式

[\d

\d]

\d表示數字,\d表示非數字,數字加非數字也就是所有字元了。當然還可以使用[\s\s]或者[\w\w]等等,所以上面那個匹配可以寫成

<

response

>

([\s\s]*)

<

\/response

>

假設有如下xml檔案,我們想返回所有step之間的文字,這裡即abc和xyz。

<

steps

>

<

step

index

='1'

>

abcstep

>

<

step

index

='2'

>

xyzstep

>

step

>

那麼可以使用下面的方法

my

@result

=$text

=~/<

step

.*?>(.*

)<\/

step

>/

g ;

解釋一下,匹配abc左邊的內容,為防止*匹配到本行末尾,我們使用其懶惰型版本*?,(.*)匹配abc,這裡使 用了分組,這樣結果才能存放到result陣列裡面,<\/step>匹配閉合的step,由於/是模式的分隔符,所以需要轉義。

能,因為模式串/(fred)*/表示目標串中有0個或者任意個fred,而hello, world含有0個fred,所以符合要求。

/^\d+$/

這個很簡單,沒什麼說的,注意這裡匹配的是單獨的數字串,也就是乙個數字獨立作為一行出現。而不是出現在其他字串中的數字。所以要加行的起始符和結束符。如果想要在乙個長字串中找出數字,那麼可以使用\b作為單詞的邊界符。可以使用下面的正規表示式

/\b\d+\b/

/^0[0-7]+$/

八進位制數是以0開頭的,還要注意八進位制數中基數最大是7,寫成/^0\d+$/是不對的

/^0[xx][\da-fa-f]+$/

十六進製制數以0x或0x開頭,字元可以是0-9或a-f(a-f)。注意這裡沒有處理字母大小寫混合的情況,所以0x12abcd也是合法的十六進製制數。如果要保持大小寫一致的話,可以使用下面的表示式。

/^0x[\da-f]+$|^0x[\da-f]+$/
將上面的十進位制,八進位制和十六進製制聯合起來即可。

/^\d+$|^0[0-7]+$|^0[xx][\da-fa-f]+$/

注意不能將^和$提取出來作為公共部分,下面這樣寫是不對的

/^\d+|0[0-7]+|0[xx][\da-fa-f]+$/

因為|會將它前面所有字元作為乙個模式,所以^\d+成了乙個獨立的模式,這樣導致只會匹配字串開頭乙個十進位制數,同樣也只會匹配結尾的乙個十六進製制數。這顯然是不對的。如果非要這麼些,可以將模式加上小括弧作為乙個分組,像下面這樣。這樣寫貌似也不對,需要繼續研究。

/^(\d+)|(0[0-7]+)|(0[xx][\da-fa-f]+)$/

Perl 常用正規表示式整理

前言 正規表示式,又稱規則表示式。英語 regular expression,在程式碼中常簡寫為regex regexp或re 電腦科學的乙個概念。正則表通常被用來檢索 替換那些符合某個模式 規則 的文字。許多程式語言都支援利用正規表示式進行字串操作。例如,在perl中就內建了乙個功能強大的正規表示...

Perl 正規表示式

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

Perl正規表示式

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