Python正規表示式使用

2021-07-10 05:58:50 字數 3757 閱讀 5526

python正規表示式使用

正規表示式不是python內建的功能,所以需要引入import re模組才可以使用。正規表示式的功能很多,但是我們通常使用的功能也就是那幾個,這裡對工作中經常使用到的正規表示式進行乙個系統的總結。

1.  

字元:

. 匹配除了換行符「\n」外的字元

\ 轉義字元,使後乙個字元改變以前的意思。如\* 只表示乙個字元*

字符集,範圍字元。括號中的字元可以列舉,也可以定義範圍,如[abc],[a-c]

2.  

預定義字符集(可以出現在字符集[…]中)

\d 數字,[0-9]

\d 非數字,[^0-9]

\s 空白字元,[空格\t\r\n\f\v]

\s 非空白字元,[^\s]

\w 單詞字元,字母數字下劃線[a-za-z0-9_]

\w 非單詞字元,[^\w]

3.  

數量詞(用在字元或(…)之後)

? 匹配0個或1個字元

+ 匹配1個或多個字元

* 匹配0個或多個字元

匹配前乙個字元出現m次

匹配前乙個字元出現m至n次;省略m,匹配0至n次;省略n,匹配m至無限次

?? +?? ? 使?,+,*,變成非貪婪模式

4.  

邊界匹配(不消耗待匹配字串中的字元)

^ 匹配字串開頭,多行模式中匹配每一行的開頭

$ 匹配字串的結尾,多行模式中匹配每一行的結尾

\a 緊匹配字串開頭

\z 僅匹配字串結尾

\b 匹配\w和\w之間    a\b!bc 匹配 a!bc

\b [^\b]              a\bbc   匹配 abc

5.  

邏輯分組

| 代表表示式任意匹配乙個,先嘗試左邊匹配,左邊匹配成功則跳過右邊表示式。如果|沒有被包含在()中,則它的範圍是整個正規表示式

(…) 括號中的表示式將分組,從表示式左邊,每遇到乙個分組的左括號「(」編號+1。分組表示式作為乙個整體,後面可接數量詞。表示式中的|僅在改組中有效

(?p…)分組除了原有的編號外,為分組指定乙個別名,如 (?pabc)匹配abcabc

\引用編號為number的分組到字串中

(?p=name) 引用別名為name的分組匹配到的字串,如 (?p\d)abc(?p=id)匹配 1abc1,5abc5

6.  

正則練習:

m.group

輸出匹配的所有子字串合集,等價於m.group(0);m.groups()輸出匹配的所有子字串,下表從1開始;

1)  匹配字串全部是小寫

importre

str ='abcdef'

p = re.compile('^[a-za-z]*$')

m = p.match(str)

ifm:

print

'm.group()::',m.group()

print

'm.groups()::',m.groups()

輸出:m.group():: abcdef

m.groups():: ()

2)  從http請求中返回的content-type內容提取出charset的值

import re

str ='text/html; charset=utf-8'

#?i

忽略大小寫,與寫在後面是一致的,

re.compile(pattern,flags)

r = re.compile('(?i).*charset

\\s*=

\\s*([^

\\s]+)')

m = r.match(str)

ifm:

print

'm.group()::',m.group()

print

'm.groups()::',m.groups()

輸出:m.group():: text/html; charset=utf-8

m.groups():: ('utf-8',)

3)  匹配名字、姓名和**

import re

str ='doe, john: 555-1212'

p = re.compile('(?p\w+), (?p\w+): (?p\s+)')

m = p.match(str)

ifm:

print

'm.group()::',m.group()

print

'm.group(first)::',m.group('first'),m.group(2)

print

'm.group(last)::',m.group('last'),m.group(1)

print

'm.group(phone)::',m.group('phone'),m.group(3)

輸出:m.group():: doe, john: 555-1212

m.groups(first):: john john

m.groups(last):: doe doe

m.groups(phone):: 555-1212 555-1212

4)  提取出ip和路徑

importre

str ='192.168.22.77:/home/adf'

p = re.compile('(?p\d+\.\d+\.\d+\.\d+):(?p.+)')

m = p.match(str)

ifm:

print

'm.group()::',m.group()

print

'm.groups()::',m.groups()

print

'm.group(ip)::',m.group('ip')

print

'm.group(path)::',m.group('path')

輸出:m.group():: 192.168.22.77:/home/adf

m.groups():: ('192.168.22.77', '/home/adf')

m.group(ip):: 192.168.22.77

m.group(path):: /home/adf

python正規表示式及使用正規表示式的例子

正規表示式 正則表達用來匹配字串 正規表示式匹配過程 正規表示式語法規則 匹配除換行 n 外的任意字串 abcabc 轉義字元,使後乙個字元改變原來的意思 a c a c 字符集,對應的位置可以是字符集中任意字元,字符集中的字元可以逐個列出,也可以給出範圍,如 abc 或 a c 第乙個字元如果是 ...

python 正規表示式使用

場景 替換很多動態資料的時候,會重複很多的條件判斷if,replace。作用 完成多步,同時去匹配符合特定規則的字串,完成通用的正則匹配 正規表示式是一種通用的字串匹配技術,是不會因為程式語言不同發生變化。想要查詢某種特徵的,具有一定規則的字串,都是可以嘗試使用正規表示式 jsonpath,xpat...

Python正規表示式使用

python通過re模組提供對正規表示式的支援 使用re的一般步驟是先將正規表示式的字串形式 編譯為pattern例項,然後使用pattern例項處理文字並獲得匹配結果,最後使用match 例項獲得資訊,進行其他操作。主要用到的方法列舉如下 首先說一 下re 中compile 函式,它將乙個正規表示...