pythonRegex2,pythonRegex

來源:互聯網
上載者:User

pythonRegex2,pythonRegex

匹配電話號碼:

 1 >>> import re 2 >>> pattern=r'\d{3,4}-?\d{8}' 3 >>> re.findall( pattern, '021-12345678' ) 4 ['021-12345678'] 5 >>> re.findall( pattern, '02188888888' ) 6 ['02188888888'] 7 >>> re.findall( pattern, '0218888888' ) 8 [] 9 >>> re.findall( pattern, '021-8888888' )10 []11 >>> 

把Regex,編程成一個對象,可以提高匹配效率

>>> patterTel=re.compile( pattern )>>> patterTel<_sre.SRE_Pattern object at 0x7fd19ba5ab90>>>> patterTel.findall( '021-88888888' )['021-88888888']>>> 

可以通過編譯成對象,傳參(re.I),把匹配方式改成忽略大小

 1 >>> pattern=r'[a-z]+' 2 >>> re.findall( pattern, 'abc' ) 3 ['abc'] 4 >>> re.findall( pattern, 'aBc' ) 5 ['a', 'c'] 6 >>> re.compile( pattern, re.I ) 7 <_sre.SRE_Pattern object at 0x7fd19b906490> 8 >>> cPattern = re.compile( pattern, re.I ) 9 >>> cPattern.findall( 'aBc' )10 ['aBc']11 >>> 

match,匹配到的字元是否在 被匹配字串的開頭,如果是,返回一個對象.

>>> pattern=r'abc'>>> re.match( pattern, 'ghostwu abc' )>>> re.match( pattern, 'abc ghostwu' )<_sre.SRE_Match object at 0x7fd19b96c780>>>> re.match( pattern, ' abc ghostwu' )>>> res = re.match( pattern, 'abc ghostwu' )>>> if res:...     print '是以abc開頭的'... else:...     print '不是以abc開頭的'... 是以abc開頭的>>> 

search:存在就返回對象

>>> pattern=r'abc'>>> re.search( pattern, 'abc ghostwu' )<_sre.SRE_Match object at 0x7fd19b96c850>>>> re.search( pattern, 'ghostwu abc' )<_sre.SRE_Match object at 0x7fd19b96c780>>>> re.search( pattern, 'ghostwu abc def' )<_sre.SRE_Match object at 0x7fd19b96c850>>>> re.search( pattern, 'ghostwu def' )>>> 

finditer返回一個迭代器,findall返回的是列表

>>> pattern=r'abc'>>> iterator=re.finditer( pattern, 'abc def abc ghostwu abc' )>>> iterator.next()<_sre.SRE_Match object at 0x7fd19b96c780>>>> iterator.next()<_sre.SRE_Match object at 0x7fd19b96c850>>>> iterator.next()<_sre.SRE_Match object at 0x7fd19b96c780>>>> iterator.next()Traceback (most recent call last):  File "<stdin>", line 1, in <module>StopIteration>>> 

group方法,可以查看match匹配到的值

>>> pattern=r'abc'>>> res=re.match( pattern, 'abc ghostwu abc' )>>> res<_sre.SRE_Match object at 0x7fd19b96c850>>>> res.group()'abc'

同樣可用於迭代器返回的對象

>>> pattern=r'abc'>>> re.finditer( pattern, 'abc ghostwu abc abc hello' )<callable-iterator object at 0x7fd19b982190>>>> res = re.finditer( pattern, 'abc ghostwu abc abc hello' )>>> res.next().group()'abc'>>> res.next().group()'abc'>>> res.next().group()'abc'>>> res.next().group()Traceback (most recent call last):  File "<stdin>", line 1, in <module>StopIteration>>> 

re.sub:替換

>>> str='hello abc'>>> str.replace( 'abc', 'ghostwu' )'hello ghostwu'>>> str'hello abc'>>> re.sub( r'abc', 'ghostwu', str )'hello ghostwu'>>> 

把小寫(r,s,t)字母換成大寫的R

>>> str='ghostwu:hi,nice to meet you!'>>> re.sub( r'[r-t]', 'R', str )'ghoRRwu:hi,nice Ro meeR you!'>>> 
>>> str=r'jfsdaft jdfasfcxvt jfdsafdast'>>> pattern=r'j.*t?'>>> re.sub( pattern, 'javascript', str )'javascript'>>> re.subn( pattern, 'javascript', str )('javascript', 1)

subn:結果中多了一個數字,表示一共替換了多少次

split:切割

>>> ip='127.0.0.1'>>> ip.split( '.' )['127', '0', '0', '1']>>> pattern='\.'>>> re.split( pattern, ip )['127', '0', '0', '1']
>>> str="hello, my name is ghostwu">>> pattern=r'[\s,]'>>> re.split( pattern, str )['hello', '', 'my', 'name', 'is', 'ghostwu']>>> 

如果分割符號的形式不同,用正則的split是比較方便的

 

聯繫我們

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