概念
- 正則表達(dá)式是描述一組字符串特征的模式,用來匹配特定的字符串。
- 元字符是在正則表達(dá)式中有特殊含義的字符,也是保留字符,是不參與匹配的。
支持的語言及工具
幾乎所有的編程語言以及編輯器都支持正則表達(dá)式,但是有可能支持的力度、方式不太一樣,像perl/java/js等。
類unix系統(tǒng)下的工具比較多用的也比較頻繁,像grep/awk/sed等。
特點(diǎn)
- 同一個匹配結(jié)果可以通過不同的正則表達(dá)式實(shí)現(xiàn)
- 同一個正則表達(dá)式有可能匹配多個結(jié)果
- 大小寫敏感
單字符匹配
- 普通元字符
| 元字符 | 含義 | 舉例 | 說明 |
|---|---|---|---|
| [] | 字符組或者字符集 | [0123],表示只會配置中括號中出現(xiàn)的字符 | |
| - | 連字符表示范圍 | [0-9],表示要配置0到9的數(shù)字 | 只在中括號中表示連字符 |
| ^ | 取非 | [^0-9] 表示除了0到9的數(shù)字都匹配 | 對整個字符集生效 |
| . | 通配符,匹配任意單個字符 | 有些情況下不能匹配行起始符 | |
| \ | 轉(zhuǎn)義其他元字符 | \. 表示.這個字符本身 | 需要放在其他元字符之前使用,表示后面跟的字符表示一個普通字符。 |
- 下面一些與\搭配的字母或者數(shù)字,一起可以稱為元字符,也可以稱為字符簡寫形式
| 元字符 | 含義 | 說明 |
|---|---|---|
| \a | 報警符 | |
| [\b] | 退格字符(回退并刪除) | 需要放在中括號中 |
| \c x | 控制字符 | |
| \d | 數(shù)字字符 | 同 [0-9]的功能 |
| \D | 非數(shù)字字符 | 同 [^0-9] |
| \o xxx | 八進(jìn)制值 | |
| \w | 單詞字符 | 同[a-zA-Z0-9_] |
| \W | 非單詞字符 | 同[^a-zA-Z0-9_] |
| \0 | 空字符 | |
| \x xx | 十六進(jìn)制值 | |
| \u xxx | Unicode值 | |
| \n | 換行符 | |
| \r | 回車符 | |
| \s | 空白字符 | 同[\f\n\r\t\v] |
| \S | 非空白字符 | 同[^\f\n\r\t\v] |
| \t | 水平制表符 | 即Tab鍵 |
| \v | 垂直制表符 | |
| \V | 非垂直制表符 | |
| \f | 換頁符 | |
| \h | 水平空白符 | |
| \H | 非水平空白符 |
- POSIX字符類
說明:并不是所有的語言或者工具都支持POSIX字符類
在類unix環(huán)境的bash腳本中使用,還是比較一目了然
使用時必須以[[開頭,]]結(jié)尾,如[[:alpha:]]
| 字符類 | 含義 | 說明 |
|---|---|---|
| [:alnum:] | 任何一個字母或者數(shù)字 | 同[a-zA-Z0-9] |
| [:alpha:] | 任何一個字母 | 同[a-zA-Z] |
| [:lower:] | 任何一個小寫字母 | 同 [a-z] |
| [:upper:] | 任何一個大寫字母 | 同 [A-Z] |
| [:blank:] | 空格或者制表符 | 同[ \t] |
| [:space:] | 任何一個空白字符,包括空格 | 同[ \t\f\n\r\v] |
| [:cntrl:] | ASCII控制字符 | ASCII 0到31,再加上127 |
| [:digit:] | 任何一個數(shù)字 | 同[0-9]或者\(yùn)d |
| [:xdigit:] | 任何一個十六進(jìn)制數(shù)字 | 同[a-fA-F0-9] |
| [:graph:] | 不包含空格的可打印字符 | 同[:print:] |
| [:print:] | 可打印字符 |
多字符匹配
將元字符放在需要匹配的字符后面,表示此字符重復(fù)匹配多少次
| 元字符 | 含義 | 說明 |
|---|---|---|
| + | 匹配一個或者多個 | |
| * | 匹配0個或者多個 | |
| ? | 匹配0個或者1個 | |
| {m} | 精確匹配m個 | |
| {m,n} | 至少匹配m個,至多匹配n個 | 其中m,n可以只配置一個值 |