正規表示式

2021-10-04 05:29:26 字數 2909 閱讀 1034

符號說明.

匹配任意字元

匹配集合中的任意字元

[^]集合取反

\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正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...