正規表示式速查筆記

李納斯小盒發表於2018-05-21

Android 開發筆記 onGithub

閱讀《正規表示式必知必會》小冊子,做一點摘要,以備用查之。

必備網站


正規表示式作用

查詢或操作字串

操作符

操作符 功能 示例
. 匹配任何單個字元
[ ] 匹配多個字元的某一個
[ 0-9A-Za-z] 利用字符集合區間
^ 取非匹配 [^0-9]
+ 匹配一個或多個連續的字元
* 匹配零個或多個連續的字元
? 匹配零個或一個字元 https?匹配http和https
{6} 匹配重複次數 [[:xdigit:]]{6}
{2,4},{3,} 匹配重複次數設定區間
*?、+?、{n, }? 懶惰型元字元
\b 匹配單次的開始或結尾 \bcap 匹配cape不匹配recap
\B 不匹配單次的開始或結尾
^ 定義字串開頭
$ 定義字串結尾
(?m) 分行匹配
( ) 子表示式 ( ){2, } 或 (19‘豎線’20)\d{2}
(?= ) 向前查詢 .+(?=:)匹配https://中的https,注意沒有冒號
(?<= ) 向後查詢
(?! ) 負向前查詢 向前查詢不與給定模式匹配的文字
(?<! ) 負向後查詢
|特殊字元轉義 \[

回溯

回溯中的引用 例如: [ ]+(\w+)[ ]+\1 匹配 and and

回溯中的替換 正規表示式 (\d{3})(-)(\d{3})(-)(\d{4}) 替換 ($1) $3-$5313-555-1234替換成(313) 555-1234

回溯中的條件 (aaaa)? (?(1)aaaa) \d{5}(?(?=-)=\d{4}) 匹配22222, 44444-4444 但不匹配33333-

回溯中的替換的大小寫

例如: 正規表示式 (<[Hh]1>)(.*?)(</[Hh]1>) 替換 $1\U$2\E$3<h1></h1>之間內容轉成大寫

操作符 說明
\E 結束\L或\U的轉換
\l 把下一個字元轉換成小寫
\L 把\L到\E之間的字元全部轉換成小寫
\u 把下一個字元轉換為大寫
\U 把\U到\E之間的字元全部轉換為大寫

特定字元類別

操作符 說明
\d 任何一個數字字元,等價於[0-9]
\D 任何一個非數字字元,等價於[^0-9]
\w 任何一個字母數字字元(大小寫均可)或下劃線,等價於[a-zA-Z0-9_]
\W 任何一個非字母數字或下劃線字元,等價於[^a-zA-Z0-9_]
\s 任何一個空白字元,等價於[\f\n\r\t\v]
\S 任何一個非空白字元,等價於[^\f\n\r\t\v]

POSIX字元類

字元類 說明
[:alnum:] 任何一個字母或數字[a-zA-Z0-9]
[:alpha:] 任何一個字母
[:blank:] 空格或製表符\t
[:cntrl:] ASCII控制字元(ASCII 0到31,在加上ASCII 127)
[:digit:] 任何數字
[:graph:] 和[:print:]一樣,但不包括空格
[:lower:] 任何小寫字母
[:print:] 任何可列印字元
[:punct:] 既不屬於[:alnum:]也不屬於[:cntrl:]的任何一個字元
[:space:] 任何一個空白字元,包括空格
[:upper:] 任何一個大寫字母
[:xdigit:] 任何一個十六進位制數字[a-fA-F0-9]

空白字元

元字元 說明
\b 回退(Backspace)
\f 換頁
\n 換行
\r 回車符
\t 製表符
\v 垂直製表符

備註

  • 正規表示式區分大小寫
  • DOS或windows系統檔案路徑是 反斜槓
    Linux或Unix為正斜槓 /
  • 匹配十六進位制值 eg: \x0A 對應於ASCII字元10,效果等價於\n
  • 匹配八進位制值 eg: \011 對應於ASCII字元9,效果等價於\t

相關文章