可視化正則表達式網站:regexper.com
1. 單字符
任何可見字符,如:字母a ~ z,數(shù)字1 ~ 9,漢字'愛'
2. 特殊字符
| 特殊字符 | 正則表達式 | 記憶方式 |
|---|---|---|
| 換行符 | \n | newline |
| 換頁符 | \f | form feed |
| 回車符 | \r | return |
| 空白符 | \s | space |
| 制表符 | \t | tab |
| 垂直制表符 | \v | vertical tab |
| 回退符 | [\b] | backspace 與\b(分界符) 區(qū)分 |
3. 元字符 / 符號
| 正則表達式 | 匹配區(qū)間 | 記憶方式 |
|---|---|---|
| \d | 單個數(shù)字,[0-9] | digit |
| \D | 除了[0-9] | not digit |
| \w | 包括下劃線'_'在內的單個字符,含[A-Za-z0-9] | word |
| \W | 非單字字符 | not word |
| \s | 匹配空白字符,含空格、制表符、換頁符、換行符、回車符 | space |
| \S | 匹配非空白字符 | not space |
| . | 除了換行符之外的任何字符 | 句號. 除了句子結束符 |
| {min, max} | 匹配字符出現(xiàn)的次數(shù) | 如 \d{1,7}: 匹配1 ~7 數(shù)字,a{3}:字母a出現(xiàn)3次 |
| [] | 表示區(qū)間 | 如 [a-z]: 匹配a-z區(qū)間中一個元素 |
| * | 用來表示匹配0個字符或無數(shù)個字符。通常用來過濾某些可有可無的字符串 | >= 0,如 a*: 匹配出現(xiàn)0個或多個字母a |
| + | 適用于要匹配同個字符出現(xiàn)1次或多次的情況 | >= 1 |
| ? | 用來匹配1個或0個字符 | 0/1, 如 colou?r: 匹配color 或 colour |
| \b | ||
| () | 正則分組符號,用來包裝子正則表達式 | 如 (\d{1,3})@(\w)(.com) |
| \ 1 ('\ + 數(shù)字'形式) | 指代分組1匹配的結果 | 如 ([^_]\w{1,5})(\1)#(dev): 分組2位置使用分組1匹配的結果作為正則匹配模式 |
3. 位置邊界
單詞分界符:
\b
如果要匹配單詞cat,而非單詞category,則需要用到單詞邊界符:\b
示例:/\bcat\b/字符串邊界符 :
^(字符串開始)$(字符串結尾)
示例:/^I am a dever.$/其他的:
\B: 非單詞邊界 (not boundary)
m: 多行匹配模式 (multiple of lines)/ok regular expression/m
i: 忽略大小寫 (ignore case)/\w{2,6}@qq.com/i
g: 全局匹配模式 (global)示例:/\d{1,3}#\s/g
(?=regex): 前向查找 示例: /ap(?=ple)/ 查找apple,而非plement
(?!regex): 非前向查找
(?<=regex): 后向查找 示例: /(?<=ple)ment/ 查找ple但不匹配apple里的
(?:regex): 非捕獲組
4. 邏輯處理
| 邏輯關系 | 正則元字符 |
|---|---|
| 與 | 默認regex間連接是與關系 |
| 或 | 豎線/ |
| 非 | [^regex] 和 ! |