閱讀《正規表示式必知必會》小冊子,做一點摘要,以備用查之。
必備網站
正規表示式作用
查詢或操作字串
操作符
操作符 | 功能 | 示例 |
---|---|---|
. | 匹配任何單個字元 | |
[ ] | 匹配多個字元的某一個 | |
[ 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-$5
將313-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