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...