1. 程式人生 > 實用技巧 >8、正則表示式-re方法的屬性

8、正則表示式-re方法的屬性

  • 編譯標誌-flags

  DOTALL,S:使.匹配包括換行在內的所有字元

  IGNORECASE,I:使匹配對大小寫不敏感

  LOCAL,L:本地化識別(local-aware)匹配.法語等

  MULTILINE,M:多行匹配,影響^和$

>>> s = '''
hello python
python hello
hello python hello
python hello py
'''
>>> re.findall(r'^hello',s)           
[]
>>> re.findall(r'^hello',s,re.M)       #當字串 為多行時,需要加M來讓正則匹配\n後面的字元
[
'hello', 'hello']
>>> s
'\nhello python\npython hello\nhello python hello\npython hello py\n'

  VERBOSE,X:能夠使用REs的verbose狀態,使之被組織的更加清晰易懂

>>> tel = r'''
\d{3,4}
-?
\d{8}
'''
>>> re.findall(tel,'010-12345678')
[]
>>> re.findall(tel,'010-12345678',re.X)       #當正則表示式為多行時,需要加入X屬性來使正則表示式清晰易懂
['010-12345678'] >>> tel '\n\\d{3,4}\n-?\n\\d{8}\n'

  分組:'('和')',可以把相關的資料化為一個整體,在這個整體中可以做其他操作,比如|(或),findall會優先返回分組中的資料

>>> email = r'\w{3,8}@\w+(\.com|\.cn)'
>>> re.findall(email,'[email protected]')
['.com']