python非貪婪、多行匹配正則表達式

jopen 11年前發布 | 17K 次閱讀 Python開發 Python

一些regular的tips:

非貪婪flag

>>>  re . findall ( r " a( \d +?) " " a23b " )
        
[ ' 2 ' ]
>>> 
re . findall ( r " a( \d +) " " a23b " )
        
[ ' 23 ' ]

注意比較這種情況:

>>>  re . findall ( r " a( \d +)b " " a23b " )
        
[ ' 23 ' ]
>>> 
re . findall ( r " a( \d +?)b " " a23b " )
        
[ ' 23 ' ]

如果你要多行匹配,那么加上re.S和re.M標志
re.S:.將會匹配換行符,默認.不會匹配換行符

>>>  re . findall ( r " a( \d +)b.+a( \d +)b " " a23b \n a34b " )
        
[]
>>> 
re . findall ( r " a( \d +)b.+a( \d +)b " " a23b \n a34b " re . S )
        
[( ' 23 ' ' 34 ' )]
>>>

re.M:^$標志將會匹配每一行,默認^和$只會匹配第一行

>>>  re . findall ( r " ^a( \d +)b " " a23b \n a34b " )
        
[ ' 23 ' ]
>>> 
re . findall ( r " ^a( \d +)b " " a23b \n a34b " re . M )
        
[ ' 23 ' ' 34 ' ]

但是,如果沒有^標志,

>>>  re . findall ( r " a( \d +)b " " a23b \n a23b " )
        
[ ' 23 ' ' 23 ' ]

可見,是無需re.M

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!