python使用正規表示式

2021-12-30 00:01:27 字數 3208 閱讀 4771

python中使用正規表示式

1. 匹配字元

正規表示式中的元字元有 . ^ $ * + ? [ ] \ | ( )

匹配字元用的模式有

\d 匹配任意數字

\d 匹配任意非數字

\s 匹配任意空白字元

\s 匹配任意非空格字元

\w 匹配任意數字或者字母

\w 匹配任意非數字或者字母

2. 正規表示式

python中使用compile處理正規表示式,如:

import re;

p=re.compile(『[a-c]』);

p.match(s);

s是待匹配的字串,match是匹配方法,類似的方法有

match() 確定從行首開始匹配

search() 在任意位置匹配

findall() 找匹配的所有子串,並作為子串返回

finditer() 找匹配的所有子串,並且以迭代器的形式返回

match也有很多方法,如:

group() 把正規表示式匹配的字串返回

start() 返回匹配的起點

end() 返回匹配的終點

span() 返回匹配的(start,end)的元組

例1:>>>import re;

>>>p=re.compile(『^[a-c]』)

>>>q=p.match(「abcd」);

>>>print q.group()

ab>>>>q.span()

(0,2)

例2:>>>import re

>>>p=re.compile(『\d+』);

>>>q=p.findall(『1 and 10 and 20』);

>>>print q

[『1』,』2』,』3』]

上述的匹配也可以使用另外一種形式,即:

re.match(』\d+』,』d23r』)

例3:>>>p=re.match(』\d+』,』d23r』)

>>>print p

none

匹配的其它引數:

re.compile(『[a-c]』,re.i) re.i 表示忽略大小寫

re.compile(『^ab$』,re.m) re.m 表示^或者$在行首和行尾以及字串的開頭和結束都會進行匹配。如果不加這個標誌,只會在字串的開始和結束之處匹配

例4:re.compile(「」」

[1-3] #1-3

[a-c] # a-c

「」」,re.verbose

) re.verbose 的出現使得正規表示式可以再多行出現,而且可以在每行加上注釋

上面的匹配相當於 re.compile(『[1-3][a-c]』)

3. 分組

使用()來進行分組

例5:>>>p=re.compile(『(12)+』)

>>>m=p.match(『121212』)

>>>print m.group()

上面匹配的是12重複出現一次或多次

還可以列印分組的資訊,

>>>print m.group(1)

python會自動捕獲分組的資訊,如果不想捕獲分組的資訊,可以使用?:

例6:>>>import re

>>>s =」hello ab1cd」;

>>>p=re.search(『(?:h.*)(a.*)(c.*)』);

>>>print 「a* 」.format(p.group(1))

a* ab

>>>print 「c* 」.format(p.group(2))

c* cd

p.group(0)存放的是整個表示式的匹配情況,p.group(1)存放的是(a.*)的匹配資訊,p.group(2)存放的是(b.*)的匹配資訊,而 h.*前面因為有?:沒有**獲

如果分組過多,使用組的標號還是顯得麻煩,這時可以對組進行命名,然後可以通過名字來使用它們。

例7:>>>import re;

>>>s=」hello ab1cd」

>>>p=re.search(『(?pa.*)(?pc.*)』);

>>>print 「a* 」.format(p.group(『a』)

a* ab

>>>print 「c* 」.format(p.group(『c』))

c* cd

4.貪婪和非貪婪模式

在貪婪模式下,* + 都會盡可能地多匹配字元,如:

例8:>>>import re;

>>>p=re.compile('');

>>>m=p.findall('

>>>print m;

有時希望它匹配出

例9:>>>import re;

>>>p=re.compile('');

>>>m=p.findall('

>>>print m;

5. 前向定界符和後向定界符

如果先匹配模式a,在匹配模式b,可以使用a(?=b),如果先匹配模式a,而且希望後面沒有b,可以使用a(?!b).

例10:

>>>import re;

>>>s=」ab2cd」

>>>m=re.search(「ab2(?=cd)」,s);

>>>print m.group();

ab2cd

例11:

>>>import re;

>>>s='ab2cd'

>>>m=re.search('ab2(?!cd)',s);

>>>print m

none

類似地,如果匹配模式b,同時在其前面要有模式a,可以使用(?<=a)b的形式,

如果匹配模式b,同時在其前面沒有模式a,可以使用(?

例12:

>>>import re;

>>>s=」ab2cd」;

>>>m=re.search(『(?<=ab2)cd』,s)

>>>print m.group()

cd例13:

>>>import re

>>>string= "ab2cd"

>>>pattern = re.search(r'(?

>>>print pattern;

none

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

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

Python正規表示式使用

python正規表示式使用 正規表示式不是python內建的功能,所以需要引入import re模組才可以使用。正規表示式的功能很多,但是我們通常使用的功能也就是那幾個,這裡對工作中經常使用到的正規表示式進行乙個系統的總結。1.字元 匹配除了換行符 n 外的字元 轉義字元,使後乙個字元改變以前的意思...

python 正規表示式使用

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