7.python之Regexre模組

來源:互聯網
上載者:User

標籤:python   Regex   re   

一.re模組的常用方法:

re.findall() 用於返回一個字串中,所有能被Regex所匹配到的字串,以列表的方式返回。

用法re.findall(Regex,字串)。

s1 = "sadjhjafdsajkhjsdaysadsadduayu"

比如說,想要從上面這一長串字串中,匹配出a後面有一個任一字元在緊接著一個字母u的字串。

print re.findall(‘a.u‘,s1)

>>>[‘ayu‘]


re.finditer()作用和findall一樣,不過finditer返回的並不是個列表,而是個迭代器對象,如果需要迭代操作,推薦使用finditer方法。


re.search() 在字串中按照Regex去尋找匹配所需要的字串,只找第一個匹配到的結果,然後返回一個match對象,這個對象中包含了,通過Regex匹配的資訊,我們可以通過執行該對象.group方法去擷取所匹配到的字串,如果找到想匹配的字串,就回返回一個None。

用法:re.search(Regex,字串,flag)

s1 = "hamasaki ayumi"

print re.search(‘a.u‘,s1).group()

>>>ayu

re.match()字串中按照Regex去尋找匹配所需要的字串,和search不同的是match只會從字串的開頭進行匹配!如果字串開始不符合Regex,則匹配失敗!

用法和search是一樣的。


re.split()按照指定的Regex去拆分字串。

例:

以所有的字串做為分隔字元。

s = "a1b2c3d4e5"

print re.split(r‘\d‘,s)

>>>[‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘‘]


re.sub()替換,使用Regex匹配出字串中的指定內容,然後將其替換成指定的字串。

s = "a1b2c3d4e5"

print re.sub(r‘[a-z]‘,‘ayu‘,s)

>>>ayu1ayu2ayu3ayu4ayu5

re.sub()函數還有個參數,可以設定替換多少次。

比如說,只想替換前三個匹配到的。

s = "a1b2c3d4e5"

print re.sub(r‘[a-z]‘,‘ayu‘,s,3)

>>>ayu1ayu2ayu3d4e5


re.subn() 和sub一樣,都是通過正則來替換字串內容的功能,但是subn會返回一個元組,這個元組裡不單單只有替換後的字串,還包含了這個字串中的內容被替換了幾次。

例如:

s = "a1b2c3d4e5"

print re.subn(r‘[a-z]‘,‘ayu‘,s)

>>>(‘ayu1ayu2ayu3ayu4ayu5‘, 5)


re.compile() 編譯,可以把Regex編譯成一個Regex對象。可以把那些經常使用的Regex編譯成Regex對象,這樣可以提高一定的效率。



二.pythonRegex之分組。

python中正則常用的分組方式大概分為兩種。

方法1:

print re.search(r‘(^\d{3,4})-(\d{3,8})‘,‘010-123456‘).group(0)

>>>010-123456

print re.search(r‘(^\d{3,4})-(\d{3,8})‘,‘010-123456‘).group(1)

>>>010

print re.search(r‘(^\d{3,4})-(\d{3,8})‘,‘010-123456‘).group(2)

>>>123456

如果Regex中定義了組,就可以在Match對象上用group()方法提取出子串。 

注意到group(0)永遠是原始字串,group(1)、group(2)……表示第1、2、……個子串。


方法2:

命名分組

print re.search(r‘(?P<zone_num>^\d{3,4})-(?P<phone_num>\d{3,8})‘,‘010-123456‘).group("zone_num")

>>>010

print re.search(r‘(?P<zone_num>^\d{3,4})-(?P<phone_num>\d{3,8})‘,‘010-123456‘).group("phone_num")

>>>123456

本文出自 “reBiRTH” 部落格,請務必保留此出處http://suhaozhi.blog.51cto.com/7272298/1910537

7.python之Regexre模組

聯繫我們

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