在同一位置可能出現的各類字符組成了一個字符組python
ex:[0-9]——表示0-9中任意一個數字正則表達式
[a-f]——表示a-f之間任意一個字母ip
\w | 匹配字母或數字或下劃線 |
\W | 匹配除字母或數字或下劃線之外的字符 |
\d | 匹配數字 |
\D | 匹配非數字 |
\s | 匹配任意的空白字符 |
\S | 匹配非空白字符 |
\n | 匹配一個換行符 |
\t | 匹配一個製表符 |
\b | 匹配一個單詞的結尾 |
^ | 匹配字符串的開始 |
$ | 匹配字符串的結束 |
. | 匹配除換行符以外的任意字符 |
() | 分組——對多個字符組總體作量詞約束的時候用到 |
a|b | 匹配字符a或b。從左到右匹配,匹配上就不繼續匹配了(應該把長字符串放左邊) |
[...] | 匹配字符組中的任意字符 |
[^...] | 除了字符組內其餘都匹配 |
* | 重複零次或更屢次次 |
+ | 重複一次或更屢次 |
? | 重複零次或一次 |
{n} | 重複n次 |
{n,} | 重複n次或更屢次 |
{n,m} | 重複n到m次 |
正則 | 待匹配字符 | 匹配結果 | 說明 |
\d | \d | False | 正則表達式中的元字符\d表示數字 |
\\d | \d | True | \轉義以後變爲\\ |
"\\\\d" | "\\d" | True | python裏面,字符串中'\'需轉義。每個'\'都須要轉義一次 |
r'\\d'字符串 |
r'\d' | True | r + 字符串,讓整個字符串不轉義 |
量詞後加上 ‘?’ —— 貪婪匹配table
正則 | 待匹配字符 | 匹配結果 | 說明 |
<.*> | <script>...<script> | <script>...<script> | 默認爲貪婪匹配tab 匹配儘量多的字符字符 |
<.*?> | <script>...<script> | <script>數字 <script>script |
加上'?'以後,匹配儘量少的字符ab 將貪婪匹配轉爲非貪婪匹配(惰性匹配) |
最經常使用:
.*? —— 匹配儘可能少的任意字符
.*?abc —— 一直匹配,遇到abc就中止
(1)?—— 表示量詞,重複零次或一次
(2)量詞+?—— 儘量少的匹配
(3)?:+分組—— 取消分組優先