「Python正則表達式」筆記

正則表達式一般用于檢索,替換文本。

一.正則表達式元字符和語法:

這些語法是每種語言都通用的。接下來記一下python提供的正則表達式操作函數(shù)。

二. Python提供的正則表達式處理函數(shù)

(1)re.match

re.match的函數(shù)原型為:re.match(pattern, string, flags)

第一個參數(shù)是正則表達式,如果匹配成功,則返回一個Match,否則返回一個None;

第二個參數(shù)表示要匹配的字符串;

第三個參數(shù)是標志位,用于控制正則表達式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。

例:

該程序匹配字符串text的第一個單詞。print結(jié)果如下:


程序第一行導(dǎo)入re模塊。第三行中(\w+)為正則表達式第一個分組。意思為匹配單詞字符一次或無限次。整個表達式(\w+)\s的意思是匹配一個空格及其前面的單詞字符一次或無限次。也就是匹配第一個單詞。

程序第5行的group(0)和group()一個意思,都是引用整個正則表達式。group(1)引用的是第一個括號里的正則表達式。在本例中g(shù)roup(0)和group(1)結(jié)果相同。關(guān)于group的用法更多參考:wiki.ubuntu.org.cn/Python正則表達式操作指南

(2)re.search

re.search函數(shù)會在字符串內(nèi)查找模式匹配,只到找到第一個匹配然后返回,如果字符串沒有匹配,則返回None。

re.search的函數(shù)原型為: re.search(pattern, string, flags)

每個參數(shù)的含意與re.match一樣,也是只返回一個匹配結(jié)果。

re.match與re.search的區(qū)別:re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數(shù)返回None;而re.search匹配整個字符串,直到找到一個匹配。

例:


第三行的正則表達式 \shan(ds)ome\s 中,首尾\s為匹配空格,(ds)為第一個分組。group(0)為匹配handsome這個單詞以及首位的空格。group(1)匹配ds這兩個字符。返回結(jié)果為:

(3)re.sub

re.sub用于替換字符串中的匹配項。

re.sub的函數(shù)原型為:re.sub(pattern, repl, string, count)

其中第二個函數(shù)是替換后的字符串;第四個參數(shù)指替換個數(shù)。默認為0,表示每個匹配項都替換。

re.sub還允許使用函數(shù)對匹配項的替換進行復(fù)雜的處理。如:re.sub(r'\s', lambda m: '[' + m.group(0) + ']', text, 0);將字符串中的空格' '替換為'[ ]'。

例:


第3行的 \s+為匹配空格一次或無限次,然后將空格替換為 -?

輸出結(jié)果為:JGood-is-a-handsome-boy,-he-is-cool,-clever,-and-so-on...

(3)re.split

可以使用re.split來分割字符串,如:re.split(r'\s+', text);將字符串按空格分割成一個單詞列表。

例:

輸出結(jié)果為一個列表:['JGood', 'is', 'a', 'handsome', 'boy,', 'he', 'is', 'cool,', 'clever,', 'and', 'so', 'on...']

(4)re.findall

re.findall可以獲取字符串中所有匹配的字符串。如:re.findall(r'\w*oo\w*', text);獲取字符串中,包含'oo'的所有單詞。例:

輸出結(jié)果為列表:['JGood', 'cool']

(5)re.compile

可以把那些經(jīng)常使用的正則表達式編譯成正則表達式對象,這樣可以提高一定的效率。下面是一個正則表達式對象的一個例子:

第3行的\w*oo\w* 為匹配含oo這兩個字符的單詞。第4行為匹配出所有含oo的單詞。第5行為給所有匹配到的單詞加上[ ],輸出結(jié)果為:

['JGood', 'cool']

[JGood] is a handsome boy, he is [cool], clever, and so on...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • re模塊手冊 本模塊提供了和Perl里的正則表達式類似的功能,不關(guān)是正則表達式本身還是被搜索的字符串,都可以...
    喜歡吃栗子閱讀 4,195評論 0 13
  • 本文介紹了Python對于正則表達式的支持,包括正則表達式基礎(chǔ)以及Python正則表達式標準庫的完整介紹及使用示例...
    Python程序媛閱讀 1,447評論 0 22
  • 1.正則表達式概述 正則表達式,又稱正規(guī)表示式、正規(guī)表示法、正規(guī)表達式、規(guī)則表達式、常規(guī)表示法(英語:Regula...
    TENG書閱讀 986評論 0 1
  • 生平第一次看見日出,是在美麗的嘉興,且是在睡眼惺忪的情況下體會到的。早晨6時許,天空霧蒙蒙地亮起來了,還未趕...
    小甘草閱讀 327評論 0 0
  • 這次嘗試使用代碼在LaTex中繪制樹狀圖,然而過程竟然頗為曲折。于是作此小記。 tikz 最初找到了這個包,于是使...
    Sicuso閱讀 2,114評論 1 0

友情鏈接更多精彩內(nèi)容