Python re模組介紹_python

來源:互聯網
上載者:User

Python中逸出字元

Regex使用反斜線” \ “來代表特殊形式或用作逸出字元,這裡跟Python的文法衝突,因此,Python用” \\\\ “表示Regex中的” \ “,因為Regex中如果要匹配” \ “,需要用\來轉義,變成” \\ “,而Python文法中又需要對字串中每一個\進行轉義,所以就變成了” \\\\ “。
上面的寫法是不是覺得很麻煩,為了使Regex具有更好的可讀性,Python特別設計了原始字串(raw string),需要提醒你的是,在寫檔案路徑的時候就不要使用raw string了,這裡存在陷阱。raw string就是用'r'作為字串的首碼,如 r”\n”:表示兩個字元”\”和”n”,而不是分行符號了。Python中寫Regex時推薦使用這種形式。

Regex元字元說明

.  匹配除分行符號以外的任一字元^  匹配字串的開始$  匹配字串的結束[] 用來匹配一個指定的字元類別?  對於前一個字元字元重複0次到1次*  對於前一個字元重複0次到無窮次{} 對於前一個字元重複m次{m,n} 對前一個字元重複為m到n次\d 匹配數字,相當於[0-9]\D 匹配任何非數字字元,相當於[^0-9]\s 匹配任意的空白符,相當於[ fv]\S 匹配任何非空白字元,相當於[^ fv]\w 匹配任何字母數字字元,相當於[a-zA-Z0-9_]\W 匹配任何非字母數字字元,相當於[^a-zA-Z0-9_]\b 匹配單詞的開始或結束

模組函數說明即舉例
re.compile 將Regex編譯成pattern對象

compile(pattern, flags=0)

第一個參數:規則
第二個參數:標誌位

re.match 只匹配字串的開始,如果字串開始不符合Regex,則匹配失敗,函數返回None

match(pattern, string, flags=0)

第一個參數:規則
第二個參數:表示要匹配的字串
第三個參數:標緻位,用於控制Regex的匹配方式

re.search 匹配整個字串,直到找到一個匹配

search(pattern, string, flags=0)

第一個參數:規則
第二個參數:表示要匹配的字串
第三個參數:標緻位,用於控制Regex的匹配方式

>>> import re>>> pattern = re.compile(r'linuxeye')>>> match = pattern.match('jb51.net')>>> print match<_sre.SRE_Match object at 0x7f4e96e61c60>>>> print match.group()linuxeye>>> m = pattern.match('blog.jb51.net') #match匹配開頭,沒找到>>> print mNone>>> m = pattern.search('blog.jb51.net') #search匹配整個字串,直到找到一個匹配>>> print m<_sre.SRE_Match object at 0x7f15abfc6b28>>>> print m.group()linuxeye
>>> m = re.match(r'linuxeye','jb51.net') #不用re.compile>>> print m<_sre.SRE_Match object at 0x7f4e96e61b90>>>> print m.group()linuxeye>>> m = re.match(r'linuxeye','www.jb51.net')>>> print mNone

re.split 用於來分割字串

split(pattern, string, maxsplit=0)

第一個參數:規則
第二個參數:字串
第三個參數:最大分割字串,預設為0,表示每個匹配項都分割
執行個體:分割所有的字串

>>> import re>>> test_str = "1 2 3 4 5">>> re.split(r'\s+',test_str)['1', '2', '3', '4', '5']>>> re.split(r'\s+',test_str,2) #分割前2個['1', '2', '3 4 5'] >>> test_str = "1 . 2. 3 .4 . 5">>> re.split(r'\.',test_str)['1 ', ' 2', ' 3 ', '4 ', ' 5']>>> re.split(r'\.',test_str,3)['1 ', ' 2', ' 3 ', '4 . 5']

re.findall 在目標字串尋找符合規則的字串

findall(pattern, string, flags=0)

第一個參數:規則
第二個參數:目標字串
但三個參數:後面還可以跟一個規則選擇項
返回的結果是一個列表,建中存放的是符合規則的字串,如果沒有符合規則的字串唄找到,就會返回一個空值

>>> import re>>> test_mail = '<test01@gmail.com> <test02@gmail.org> test03@gmail.net'>>> mail_re = re.compile(r'\w+@g....\.[a-z]{3}')>>> re.findall(mail_re,test_mail)['test01@gmail.com', 'test02@gmail.org', 'test03@gmail.net']

re.sub 以Regex為基礎的替換工作

sub(pattern, repl, string, count=0)

第一個參數:規則
第二個參數:替換後的字串
第三個參數:字串
第四個參數:替換個數。預設為0,表示每個匹配項都替換

>>> test = 'blog.jb51.net jb51.net'>>> test_re = re.compile(r'\.')>>> re.sub(test_re,'--',test)'blog--linuxeye--com linuxeye--com'>>> re.sub(test_re,'--',test,1)'blog--jb51.net jb51.net'
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.