PCRE正規表示式語法

2021-07-28 09:50:51 字數 2665 閱讀 9530

字元描述\

將下乙個 字元標記為乙個特殊字元,或乙個原義字元,或向後引用,或乙個八進位制轉義符。例如,」\n」匹配乙個換行符。序列」\」匹配」\」而」(「則匹配」(「

^匹配輸入字串的開始位置,如果設定了regexp物件的multiline屬性,^也匹配」\n」或」\r」之後的位置

$匹配輸入字串的結束位置。如果設定了regexp物件的multiline屬性,$也匹配」\n」或」\r」之前的位置

*匹配前面的子表示式零次或多次。例如,」zo*」能匹配」z」及」zoo」。*等價於

+匹配前面的子表示式一次或多次。例如,」zo+」能匹配」zo」及前面的子表示式零次或一次。例如,」do(es)?」可以匹配」do」或」does」中的」do」。?等價於

?當該字元緊跟在任何乙個其他限制符(*,+,?,,,)後面時,匹配模式是非貪婪的,非貪婪模式盡可能少地匹配所搜尋的字串,而預設的貪婪模式則盡可能多地匹配所搜尋的字串。例如,對於字串」oooo」,」o+?」將匹配單個」o」,而」o+」將匹配所有的」o」

n是乙個非負整數。匹配確定的n次。例如,」o」不能匹配bob中的」o」,但是能匹配」food」中的兩個」o」

n是乙個非負整數,至少匹配n次。例如,」o」不能匹配」bob」中的」o」,但能匹配」foooood」中的所有」o」。」o」等價於」o+」。」o」則等價於」o*」

m和n均為非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,」o」將匹配」foooood」中的前三個」o」。」o」等價於」o?」。請注意在逗號和兩個數之間不能有空格

.匹配除」\n」之外的任何單個字元。要匹配包括」\n」在內的任何字元,請使用像」[.\n]」的模式

(pattern)

匹配pattern並獲取這一匹配。所獲取的匹配可以從產生的matches集合得到,在vbscript中使用submatches集合,在jscript中則使用

0...

9屬性。要匹配圓括號字元,請使用」(「或」)」

(?:pattern)

匹配pattern但不獲取匹配結果,也就是說這是乙個非獲取匹配,不進行儲存供以後使用。例如:』industr(?:ylies)』就是乙個比』industrylindustries』更簡略的表示式

(?=pattern)

正向預查,在任何匹配pattern的字串開始出匹配查詢字串。這是乙個費獲取匹配,也就是說,該匹配無須獲取供以後使用。例如,」windows(?=95|98|nt|2000)」能匹配」windows2000」中的」windows」,但不能匹配」windows3.1」中的」windows」。預查不消耗字元,也就是說,在乙個匹配發生後,在本次匹配搜尋的最後一次匹配,而不是從包含預查的字元之後開始

(?!pattern)

負向預查,在任何不匹配pattern的字串開始處匹配查詢字串。這是乙個非獲取匹配,也就是說,該匹配無須獲取供以後使用。例如,」windows(?!95|98|nt|2000)」能匹配」windows3.1」中的」windows」,但不能匹配」windows2000」中的」windows」。

x|y匹配x或y,例如,」z|food」能匹配」z」或」food」。」(z|f)ood」則匹配」zood」或」food」

[xyz]

字元集合。匹配所包含的任意乙個字元。例如,」[abc]」可以匹配」plain」中的」a」

[^xyz]

負值字元集合。匹配未包含的任意字元。例如,」[^abc]」可以匹配」plain」中的」p」

[a-z]

字元範圍。匹配指定範圍內的任意字元。例如,」[a-z]」可以匹配」a」到」z」範圍內的任意小寫字母字元

[^a-z]

負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,」[^a-z]」可以匹配任何不在」a」到」z」範圍內的任意字元

\b匹配乙個單詞邊界,也就是指單詞和空格間的位置。例如,」er\b」可以匹配」never」中的」er」,但不能匹配」verb」中的」er」

\b匹配非單詞邊界。」er\b」能匹配」verb」中的」er」,但不能匹配」never」中的」er」

\cx匹配由x指明的控制字元。例如,」\cm」匹配乙個control-m或回車符。x的值必須為a-z或a-z之一。否則,將c視為乙個原義的」c」字元

\d匹配乙個數字字元。等價於[0-9]

\d匹配乙個非數字字元。等價於[^0-9]

\f匹配乙個換頁符。等價於\x0c和\cl

\n匹配乙個換行符。等價於\x0a和\cj

\r匹配乙個回車符。等價於\x0d和\cm

\s匹配任何空白字元,包括空格、製表符、換頁符等。等價於[\f\n\r\t\v]

\s匹配任何分空白字元。等價於[^\f\n\r\t\v]

\t匹配乙個製表符。等價於\x09和\ci

\v匹配乙個垂直製表符。等價於\x0b和\ck

\w匹配包括下劃線的任何單詞字元。等價於」[a-za-z0-9_]」

\w匹配任何非單詞字元。等價於」[^a-za-z0-9_]」

\xn匹配n,其中n為十六進製制轉義值。十六進製制轉義值必須為確定的兩個數字長。例如,」\x41」匹配」a」。」\x041」則等價於」\x01」 & 「1」。正規表示式中可以使用ascii編碼

\num

匹配num,其中num是乙個正整數。對所獲取的匹配的引用。例如,」(.)\i」匹配兩個連續的相同字元

\n表示乙個八進位制轉義值或乙個向後引用。如果\n之前至少n哥獲取的子表示式,則n為向後引用。否則,如果n為八進位制數字(0~7),則n為乙個八進位制轉義值

PCRE 正規表示式

define pcre static 靜態庫編譯選項 include include include define oveccount 30 should be a multiple of 3 define ebuflen 128 define buflen 1024 int main rc pcr...

關於pcre正規表示式庫libpcre

gcc 4.8中已經包含了std regex的標頭檔案 可是沒有實現,所以鏈結是失敗的 gcc 4.9完整的支援了c 11的regex。在4.9以前,可以尋求boost的regex。不過,我更熟悉pcre,基於perl的正規表示式的實現。將庫配置為交叉編譯,只生成靜態庫,配置pcre 如下 bin ...

正規表示式語法

jscript 8.0 正規表示式語法 正規表示式是一種文字模式,包括普通字元 例如,a 到 z 之間的字母 和特殊字元 稱為 元字元 模式描述在搜尋文字時要匹配的乙個或多個字串。表示式 匹配 s 匹配空行。d d 驗證由兩位數字 乙個連字元再加 5 位數字組成的 id 號。s s 匹配 html ...