Python初學者(五),python初學者

來源:互聯網
上載者:User

Python初學者(五),python初學者

十四、Regex

 

  Regex是用於處理字串的功能強大的工具,但它並不是Python所專屬的,許多程式設計語言都支援Regex,用法也都區別不大;

  Python中的Regex在re模組中;

  Python中的數量詞預設是貪婪的,總是嘗試匹配儘可能多的字元;非貪婪的則相反,總是嘗試匹配儘可能少的字元(例如:Regex"ab*"如果用於尋找"abbbc",將找到"abbb";而如果使用非貪婪的數量詞"ab*",將找到"a"。);

  與大多數程式設計語言相同,Regex裡使用"\"作為逸出字元,這就可能造成反斜線困擾。假如你需要匹配文本中的字元"\",那麼使用程式設計語言表示的Regex裡將需要4個反斜線"\\\\":前兩個和後兩個分別用於在程式設計語言裡轉義成反斜線,轉換成兩個反斜線後再在Regex裡轉義成一個反斜線。Python裡的原生字串很好地解決了這個問題,這個例子中的Regex可以使用r"\\"表示。

(本文Regex部分大部分借鑒於http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html,若有錯,歡迎指正)

下面介紹re模組中的幾個常用方法:

>>> import re>>> pattern = re.compile('python') # compile將字串當做Regex來編譯>>> result = pattern.search('hello python!')>>> result<_sre.SRE_Match object; span=(6, 12), match='python'>>>> result.group()'python'>>> >>> result = re.match('a', 'abc') # match是從字串的開頭開始匹配>>> result<_sre.SRE_Match object; span=(0, 1), match='a'>>>> result.group() # 並不直接返回匹配成功的字串,需要使用group()方法'a'>>> result = re.match('a', 'dabc')>>> result>>> result.group() # 沒有匹配成功Traceback (most recent call last):  File "<pyshell#6>", line 1, in <module>    result.group()AttributeError: 'NoneType' object has no attribute 'group'>>> >>> result = re.search('python', 'abcpythondef') # 在字串的全文中搜尋匹配,同樣也不會直接返回匹配成功的字串>>> result<_sre.SRE_Match object; span=(3, 9), match='python'>>>> result.group()'python'>>> >>> result = re.findall('python', 'abc python def python ghi')>>> result['python', 'python']>>> >>> result = re.sub('c', 'z', 'click', 1) # 使用匹配成功的字串替換成指定的字串,參數依次為Regex,匹配成功後要去替換的字串,原字串,替換次數>>> result # 返回替換後的字串'zlick'>>> >>> result = re.split('a', '1a2a3a4guyuyun') # 將匹配成功的字串用作字串分隔符號,返回分隔後的字串列表>>> result['1', '2', '3', '4guyuyun']>>> 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.