1. 程式人生 > >在python中使用正則表達式(三)

在python中使用正則表達式(三)

表示 spa span TE 字母 下劃線 更多 正則 正則表達式

這裏主要說一下貪婪匹配和非貪婪匹配

貪婪匹配:匹配盡可能多的字符; 非貪婪匹配:匹配盡可能少的字符

python的正則匹配默認是貪婪匹配

例子:

>>> re.match(r^(\w+)(\d*)$,abc123).groups()
(abc123, ‘‘)
>>> re.match(r^(\w+?)(\d*)$,abc123).groups()
(abc, 123)

表達式1:
\w+表示匹配字母或數字或下劃線或漢字並重復1次或更多次;\d*表示匹配數字並重復0次或更多次。
分組1中(\w)是貪婪匹配,它會在滿足分組2(\d*)的情況下匹配盡可能多的字符(有點拗口),
因為分組2(\d*)匹配0個數字也滿足,所以分組1就把所有字符全部匹配掉了,分組2只能匹配空了。

表達式2:在表達式後加個?即可進行非貪婪匹配
,如上面的(\w+?),
因為分組1進行非貪婪匹配,也就是滿足分組2匹配的情況下,分組1盡可能少的匹配,
這樣的話,上面分組2(\d*)會把所有數字(123)都匹配,所以分組1匹配到(abc)

在python中使用正則表達式(三)