正規表示式教程之操作符及說明詳解

技術之光發表於2022-03-16

本文例項講述了正規表示式中的操作符及說明。分享給大家供大家參考,具體如下:

一、普通字元

包括所有未顯式指定為元字元的列印和非列印字元組成,如大小寫字母、數字、標點符號等。

二、元字元

元字元是一些在正規表示式裡有著特殊含義的字元。因為元字元在正規表示式裡有著特殊的含義,所以這些字元不能用來代表它們本身,必須通過給它加個反斜槓字首來轉義,如此得到的轉義序列將匹配那個字元本身而不是它特殊的元字元含義。如[表示一個字符集合的開始,如果在正規表示式中要匹配[,那麼需要這樣引用:\[,才能表示[本身。

^ 匹配輸入字串的開始位置,除非在方括號表示式中使用,此時它表示不接受該字符集合。要匹配 ^ 字元本身,請使用 \^。
$ 匹配輸入字串的結尾位置。如果設定多行匹配,則 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字元本身,請使用 \$。
() 標記一個子表示式的開始和結束位置。子表示式可以獲取供以後使用。要匹配這些字元,請使用 [Math Processing Error]。
? 匹配前面的子表示式零次或一次,或指明一個非貪婪限定符。要匹配 ? 字元,請使用 \?。
* 匹配前面的子表示式零次或多次。要匹配 * 字元,請使用 \*。
+ 匹配前面的子表示式一次或多次。要匹配 + 字元,請使用 \+。
. 匹配除換行符 \n之外的任何單字元。要匹配 .,請使用 \。
[] 標記一個字符集合的開始和結束。要匹配 [或],請使用 [Math Processing Error]。
\ 將下一個字元標記為特殊字元、或原義字元、或向後引用、或八進位制轉義符。例如, 'n' 匹配字元 'n'。'\n' 匹配換行符。序列 '\\' 匹配 "\",而 '\(' 則匹配 "("。
| 指明兩項之間的一個選擇。要匹配 |,請使用 \|。
{} 標記限定符表示式的開始和結束。要匹配 {或},請使用 \{或\}。

三、非列印字元

\cx 匹配由x指明的控制字元。例如, \cM 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字元。
\f 匹配一個換頁符。等價於 \x0c 和 \cL。
\n 匹配一個換行符。等價於 \x0a 和 \cJ。
\r 匹配一個回車符。等價於 \x0d 和 \cM。
\t 匹配一個製表符。等價於 \x09 和 \cI。
\v 匹配一個垂直製表符。等價於 \x0b 和 \cK。

四、預定義字元

. 任何字元(與結束符\r\n可能匹配也可能不匹配)
\d 數字,等價於[0-9]
\D 非數字,等價於[^0-9]
\s 空白字元,等價於[ \t\n\x0B\f\r]
\S 非空白字元,等價於[^\s]
\w 單詞字元,等價於[a-zA-Z_0-9]
\W 非單詞字元,等價於[^\w]
\b 單詞的前或後邊界
\B 表示非單詞邊界

五、POSIX 字元

[:alnum:] 任何一個字母或數字,等價於[a-zA-Z0-9]
[:alpha:] 任何一個字母,等價於[a-zA-Z]
[:blank:] 空格或製表符,等價於[\t]
[:cntrl:] ASCII控制字元(ASCII 0到31,再加上ASCII127)
[:digit:] 任何一個數字,等價於[0-9]
[:graph:] 任何一個可列印字元,但不包括空格
[:lower:] 任何一個小寫字母,等價於[a-z]
[:print:] 任何一個可列印字元
[:punct:] 既不屬於[:alnum:]和[:cntrl:]的任何一個字元
[:space:] 任何一個空白字元,包括空格,等價於[^\f\n\r\t\v]
[:upper:] 任何一個大寫字母,等價於[A-Z]
[:xdigit:] 任何一個十六進位制數字,等價於[a-fA-F0-9]

六、限定符

* 匹配前面的子表示式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於{0,}。
+ 匹配前面的子表示式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於{1,}。
? 匹配前面的子表示式零次或一次。例如,"do(es)?"可以匹配 "do" 或"does" 中的"do" 。? 等價於 {0,1}。
{n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
{n,} n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。
{n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。

這裡只是按照功能的不同來對正規表示式中用到的一些操作符進行分類,不一定準確,只是為了說明正規表示式中的操作符。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015103/viewspace-2871361/,如需轉載,請註明出處,否則將追究法律責任。

相關文章