符號說明.
匹配任意字元
匹配集合中的任意字元
[^]集合取反
\d匹配任意數字,與[0-9]同義
\d匹配除數字外任意字元
\w匹配任意數字字母下劃線
\w匹配除數字字母下劃線外的字元(特殊字元)
\s匹配空白字元,包括空格和tab
\s匹配任意非空字元
re1|re2
匹配正規表示式1或正規表示式2
*前乙個字元出現任意次
+前乙個字元至少出現一次
?前乙個字元最多出現一次
前乙個字元出現m到n次
^匹配行首
$匹配行尾
\b匹配單詞邊界
(re)
對正規表示式進行分組
\number
匹配已儲存的組
(?re)
分組同時為該組命名
1. match函式
2. search函式
3. group方法
>>
>
import re
>>
> re.match(
'f..'
,'food'
); span=(0
,3), match=
'foo'
>
>>
> re.match(
'f..'
,'seafood'
)#沒有輸出,表示沒有匹配到
>>
> m = re.search(
'f..'
,'seafood'
)>>
> m
; span=(3
,6), match=
'foo'
>
>>
> m.group(
)'foo'
4. findall函式
5. finditer函式
6. compile函式
7. split方法
8. sub方法
>>
> re.findall(
'f..'
,'seafood is food')[
'foo'
,'foo'
]# finditer返回由匹配物件構成的迭代器
>>
>
list
(re.finditer(
'f..'
,'seafood is food'))
>>
>
for m in re.finditer(
'f..'
,'seafood is food'):
... m.group().
..'foo'
'foo'
# 使用-或.切割字串
>>
> re.split(
'-|\.'
,'hello-world-china.ni.hao')[
'hello'
,'world'
,'china'
,'ni'
,'hao'
]# 將字串中的x替換成tom
>>
> re.sub(
'x',
'tom'
,'hi x, nice to meet you x'
)'hi tom, nice to meet you tom'
# 在有大量匹配時,先將正規表示式模式字串進行編譯,將會有更好的執行效率
>>
> patt = re.
compile
('f..'
)>>
> m = patt.search(
'seafood'
)>>
> m.group(
)'foo'
>>
> patt.findall(
'seafood is food')[
'foo'
,'foo'
]
#統計apache日誌資訊
import re
defcount_pattern
(fname, patt)
: result =
#用於儲存結果
cpatt = re.
compile
(patt)
with
open
(fname)
as fobj:
for i in fobj:
m = cpatt.search(i)
if m:
#任何非空物件都為真
key = m.group(
) result[key]
= result.get(key,0)
+1return result
if __name__ ==
'__main__'
: logfile =
'access_log'
ip =
'^\d+(\.\d+)'
br =
'chrome|firefox|msie'
result1 = count_pattern(logfile, ip)
result2 = count_pattern(logfile, br)
print
(result1)
print
(result2)
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...