需要導入re模塊
import re
說明:
符號 | 說明 |
---|---|
. | 匹配任意1個字符(除了\n) |
[ ] | 匹配[ ]中列舉的字符 |
\d | 匹配數字,即0-9 |
\D | 匹配⾮數字,即不是數字,等價於[^0-9] |
\s | 即 空格,tab鍵,\r,\r\n,\n |
\S | 匹配⾮空⽩ |
\w | 匹配單詞字符,即a-z、A-Z、0-9、_ |
\W | 匹配⾮單詞 |
* | 匹配前⼀個字符出現0次或者⽆限次,即可有可⽆ |
+ | 匹配前⼀個字符出現1次或者⽆限次,即⾄少有1次 |
? | 匹配前⼀個字符出現1次或者0次,即要麼有1次,要麼沒有 |
{m} | 匹配前⼀個字符出現m次 |
{m,} | 匹配前⼀個字符⾄少出現m次 |
{m,n} | 匹配前⼀個字符出現從m到n次 |
^ | 匹配字符串開頭,在[ ]中表示取反,[^/] 匹配非/ |
$ | 匹配字符串結尾 |
\b | 匹配⼀個單詞的邊界 |
\B | 匹配⾮單詞 |
案例:獲取字符串GET /index HTTP/1.1 中的 /index
import re
s = “GET /index HTTP/1.1”
str = re.match("[/]+(/[ ]*)",s)
str.group(1)
‘/index’
“[/]+(/[ ]*)”
[^/] 匹配非/,+表示⾄少匹配1次,()表示分組,/表示匹配/,[^ ]表示匹配非空的字符,*表示匹配0次或無限次
注意事項:
1.Python中字符串前⾯加上 r 表示原⽣字符串
s = “c:\a\b”
re.match(“c:\a”,s) #沒有匹配到,沒加r,\ 表示轉義,實際上匹配的是"c:\a"
re.match(r"c:\a",s) #加上r之後匹配到了
<_sre.SRE_Match object; span=(0, 4), match=‘c:\a’>
2.python的正則表達式中需要轉義的元字符有以下幾個,如果加上r就不需要轉義了:
.
^
$
*
+
?
\\
[]
|
{}
()