好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python非贪婪、多行匹配正则表达式例子[转载]

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非贪婪、多行匹配正则表达式例子[转载]的详细内容...

  阅读:47次

上一篇: simplecd

下一篇:20100917更新部署