python非贪婪、多行匹配正则表达式例子[转载]
python非贪婪、多行匹配正则表达式例子[转载]
一些 re gular的tips:
1 非贪婪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 ' ]
2 如果你要多行匹配,那么加上 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
原文地址:http://www.juyimeng.com/python-multi-line-non-greedy-regular-expression-sample.html
查看更多关于python非贪婪、多行匹配正则表达式例子[转载]的详细内容...