python的正規表示式支援大量的擴充套件符號
通過使用(?ilmsux)系列,使用者可以在正規表示式裡面指定乙個或者多個標記,而不是通過compile()或者其他re模組函式。下面使用re.i/ignorecase的示例,最後乙個示例在re.m/multiline實現多行混合。
>>>import re
>>>re.findall(r'(?i)yes','yes? yes. yes!')
['yes','yes','yes']
>>>re.findall(r'(?i)th\w+','the quickest way is through this tunnel.')
['the', 'through', 'this']
>>> re.findall(r'(?im)(^th[\w ]+)','''
... this line is the fisrt ,
... another line,
... that line,it's the best
... ''')
['this line is the fisrt ', 'that line']
在前面兩個示例中,顯然不區分大小寫,在最後一行示例中,通過使用『多行』,能夠在目標字串中跨行搜尋,而不必將整個字串視為單個實體。
下一組演示使用re.s/dotall.該標記表明點號(.)能夠用來表示\n符號(反之其通常用於表示除了\n之外的全部字元):
>>> re.findall(r'th.+','''
... the firse line
... the second line
... the third line
... ''')
['the second line', 'the third line']
>>> re.findall(r'(?s)th.+','''
... the firse line
... the second line
... the third line
... ''')
['the second line\nthe third line\n']
re.x/verbose標記,允許使用者通過抑制在正規表示式中使用空白符號(除了在字元類中或者在反斜線轉義中)來建立更易讀的正規表示式。此外,雜湊、注釋、#號也可以用於乙個注釋的起始,只要他們不在乙個用反斜線轉義的字元類中。
>>> re.search(r'''(?x)
... \((\d)\) #區號
... [ ] #空白符
... (\d) #字首
... - #橫線
... (\d) #終點數字
... ''','(800) 555-1212').groups()
('800', '555', '1212')
>>>
(?:…)符號更流行;通過使用該符號,可以對部分正規表示式進行分組,但是並不會儲存該分組用於後續的檢索或者應用。當不想儲存今後不會使用的多餘匹配時,該符號非常有用。
>>>可以通過一起使用(?p<>) 和(?p=name)。前者通過使用乙個名稱識別符號而不是使用從1開始增加n的增量數字來儲存匹配,如果使用數字來儲存匹配結果,我們可以使用\1,\2….,\n來檢索。
>>> re.sub(r'\((?p\d)\) (?p\d)-(?:\d)',
...
'(\g) \g-***x','(800) 555-1212')
'(800) 555-***x'
>>>
處理驗證**號碼的規範化
>>> bool(re.match(r'\((?p\d)\) (?p\d)-(?p\d) (?p=areacode)-(?p=prefix)-(?p=number) 1(?p=areacode)(?p=prefix)(?p=number)',
...
'(800) 555-1212 800-555-1212 18005551212'))
true
>>>
使用(?=…)和(?!…)實現乙個前視匹配,而不必實際上使用這些字串,前者是正向前視斷言,後者是負向前視斷言。
>>> re.findall(r'\w+(?= van rossum)',
...
'''... guido van rossum
... tim peters
... alex martelli
... just van rossum
... ''')
['guido','just']
>>>
>>> re.findall(r'(?m)^\s+(?!noreply|postmaster)(\w+)',
...
'''... [email protected]
... ''')
['sales', 'eng', 'admin']
>>>
>>> bool(re.search(r'(?:(x|y)(?(1)y|x))','xy'))
true
>>> bool(re.search(r'(?:(x|y)(?(1)y|x))','xx'))
false
>>>
python正規表示式(二)
re模組的用法 1 re.s可以匹配轉義符 re.findall k.n darken dark nn 只輸出第乙個darken中的ken re.findall k.n darken dark nn re.s 不僅輸出darken中的ken,還輸出了dak nn中的k nn 2 re.m匹配多行 r...
Python 正規表示式(二)
這次的正規表示式學習談一談選擇符和子模式 可選項和重複子模式 在字串的各個字元都不相同的請胯下,字符集是比較好用的,但是如果只想匹配特定的字串,那麼字符集就不合適了,這裡就可以使用管道符號 比如我們只想匹配字串 python 和 perl 我們可以使用正則 python perl 但是有時候我們不需...
python正規表示式(二 )
re模組 匯入re模組 import re match方法 result re.match 正規表示式,要匹配的字串 result.group 字元 功能 匹配任意1個字元 除了 n 匹配 中列舉的字元 d匹配數字,即0 9 d匹配非數字,即不是數字 s匹配空白,即 空格,tab鍵 s匹配非空白 w...