一、定位符linux
語法 | 說明 |
---|---|
^ | 匹配字符開始的位置 |
$ | 匹配字符串結尾的位置 |
二、選擇符
選擇符爲"|",能夠理解爲「或」的意思。正則表達式
示例 | 說明 |
---|---|
hello|world | 匹配字符串hello或者world |
三、字符範圍
正則表達式用[]來限定字符範圍。shell
示例 | 說明 |
---|---|
[abc] | 查找含字符a、b、c的字符串 |
[^abc] | 匹配除了a、b、c之外的字符 |
[a-zA-Z0-9] | 查找a~z、A~Z、0~9 |
上述的連字符-表示的範圍遵循字符編碼的順序。
四、點字符與限定符app
語法 | 說明 | 示例 |
---|---|---|
. | 匹配一個任意字符 | f.o,匹配foo,fto等 |
? | 匹配前面的字符0次或者1次 | hello?,匹配hell、hello |
+ | 匹配前面的字符1次或屢次 | hello+,匹配hello、hellooooooo |
* | 匹配前面的字符0次或者屢次 | hello*,匹配hell、hello(任意個o) |
{n} | 匹配前面的字符n次 | hel{2}o,只能匹配hello |
{n,} | 匹配前面的字符最少n次 | hel{2,}o,匹配hello,helll(任意個l)o |
{n,m} | 匹配前面的字符最少n次,最多m次 | 相似上面的語法,再也不舉例 |
五、小括號
小括號有兩個做用:改變做用範圍、分組編碼
示例 | 說明 |
---|---|
改變做用範圍:(thir|four)th | 匹配thirth、fourth |
分組:(app){2} | 匹配appapp |
六、反斜槓
反斜槓的做用大體有:轉義、表示一些不能夠打印的字符、指定預約義的字符集等。blog
示例 | 說明 |
---|---|
[\^\$\*\\] | 表示匹配含有^$*\四種符號的字符串 |
\x27 | 用於linux匹配單引號。由於單引號是定界符,要匹配單引號須要用\x27進行匹配(避免被shell當成參數分隔符) |
(a)(b)(c)\3 | 「\數字」表示對括號內字符串的引用,數字表示第幾個括號。例子爲匹配abcc |
\d | 任意十進制數字,至關於[0-9] |
\D | 任意非十進制數字 |
\w | 任意單詞字符,至關於[a-zA-Z0-9] |
\W | 任意非單詞字符 |
\s | 任意空白字符,如空格,水平製表符 |
\S | 任意非空白字符 |
\b | 單詞分界符 |
\B | 非單詞分界符 |
\xhh | 表示hh(十六進制2位數字)對應的ASCII字符,如\x61表示a |
七、貪婪匹配與惰性匹配
貪婪匹配是指儘量多的匹配字符串,若是須要改爲惰性匹配,須要在限定詞後加"?"。
舉例: 若是想要匹配a****b這樣的字符串,那麼我若是輸入了a00jshbksb字符串,那麼匹配到的字符串是a00jshb仍是a00jshbksb呢?
在默認狀況下是貪婪匹配,則經過a.*b進行匹配則會匹配出a00jshbksb;若是我須要a00jshb這樣的匹配結果,則應該使用"?"進行控制,即便用a.*?b進行匹配。如圖:
字符串