1,普通字符:字母,數字,漢字,下劃線等沒有特殊含義的字符,匹配時匹配與之相對應的一個字符(單字符匹配)。
2,轉義字符:
注意:表格最後一行都爲正則表達式中的特殊含義符號匹配時都要加 \
3,字符集合:
注意:能與多字符進行匹配,且相應的大寫爲相反的意思(如:\D 表示爲非數字)
4,自定義字符集合(方括號[ ] 表示可以匹配其中的任意一個字符,其中關係爲”或“)
注意:當特殊符號被包含到 方括號[ ] 中將失去其本身的含義,除了 ^ 和 - 比較特殊;
1,當 ^ 放在最前面的時候表示非 如上面[^abc] 表示匹配 a,b,c之外的任意一個字符,但是如果將 ^ 放在中間如[a^b]則表示匹配a或^或b。因此只要^沒有放在最前面將不表示非的含義,如果非要將^放在最前面,有要其不表示非的含義可以加 \,如[\^ab] 表示匹配^或a或者b一個字符。
2,字符 - 與 ^ 差不多 ,只要不將 - 放在字符中間 就不表示 範圍 如果非要放在字符中 則 加 \
如[f\-k]表示匹配f或-或f。
5,量詞({ } 放在表達式後面):
例子:[a\-b]{2} 表示表達式[a\-b]重複出現兩次可以匹配到如:aaacc-bm-a aab
[a\-b]{2,3}表示表達式[a\-b]重複出現兩到三次可以匹配到如:aaacc-bm-a aab
注意:當使用{m,n}量詞時,默認是貪婪模式(如:[a\-b]{1,2} 當匹配到字符串aaaaa時他將會採用儘可能多的匹配方式即貪婪模式aaaaa 即先匹配兩個aa再匹配兩個aa然後再匹配一個a,而非先匹配一個a然後又一個a又一個a... 即aaaaa. 前面說的一個又一個匹配的叫非貪婪模式,即匹配儘可能少的字符 即aaaaa 只需要在{}後面加上字符 ?即 [a\-b]{1,2}?. ? + * 後面不能加?)
6,字符邊界(零寬)
例子:^ab 匹配字符串
abdagdaffdafewhf
abghf
將整個字符串看成一個字符串然後匹配 最前面的ab
同理 hf$ 匹配到最後的 hf
\b 的用法:可以將其理解爲一個虛擬位置 而且該位置前面和後面的字符必須最多有一個\w(字符下劃線數字)
7,選擇和分組
8,零寬斷言(一下表達式只是表示一個位置 即exp表達式位置前或則後面應該是什麼)
例子:\w+(?=ing) 匹配字符串:going doing playing 匹配字符串以ing結尾的(紅色部分)
\w+(?!=ing) 與上面相反 匹配字符串不以ing結尾的
(?<=go)ing 匹配字符串:going doing playing 匹配字符串以go開頭ing結尾的(紅色) (?<!go)ing 相反 匹配不以go開頭 以ing結尾的 字符串。going doing playing
(本文部分內容來自網上視頻 總結)