#正規表示式通常使用於查詢匹配的字串。python裡數量詞預設是貪婪的(在少數語言裡也可能預設是非貪婪),總是嘗試匹配盡可能多的字元;非貪婪模式剛好相反,總是嘗試匹配盡可能少的字元。
#例如,正規表示式"ab*"如果用於查詢"abbbc",就會找到"abbb"。如果使用非貪婪的數量詞"ab*?",就會找到"a"。
#例如
1#!/usr/bin/python32#
-*-coding:utf-8-*-3#
貪婪模式和非貪婪模式45
importre6
7print(re.match(r'
^(\d+)(0*)$
','102300
').groups())
#執行結果如下:
1 d:\pythonworkspace>python 貪婪模式和非貪婪模式.py2 ('
102300
', '')
#由於\d+採用貪婪模式,直接把後面的0全匹配了,結果0*只能匹配空字串。要讓0*能夠匹配到後面的兩個0,必須讓\d+採用非貪婪匹配(盡可能匹配)。在0*後面加乙個?就可以讓\d+採用非貪婪匹配。具體實現如下:
1#!/usr/bin/python32#
-*-coding:utf-8-*-3#
貪婪模式和非貪婪模式45
importre6
7print(re.match(r'
^(\d+?)(0*)$
','102300
').groups())
#執行結果如下:
1 d:\pythonworkspace>python 貪婪模式和非貪婪模式.py2 ('
1023
', '
00')
貪婪模式和非貪婪模式
1.什麼是正規表示式的貪婪與非貪婪匹配 如 string str abcaxc patter p ab c 貪婪匹配 正規表示式一般趨向於最大長度匹配,也就是所謂的貪婪匹配。如上面使用模式p匹配字串str,結果就是匹配到 abcaxc ab c 非貪婪匹配 就是匹配到結果就好,就少的匹配字元。如上面...
貪婪與非貪婪模式
對於匹配優先量詞的匹配下限很好理解,等價於 它修飾的子表示式,最少匹配0次,最多匹配1次 等價於 它修飾的子表示式,最少匹配0次,最多匹配無窮多次 等價於 它修飾的子表示式,最少匹配1次,最多匹配無窮多次。對於忽略優先量詞的下限,也是容易忽略的。也是忽略優先量詞,被修飾的子表示式使用的也是非貪婪模式...
Regexp 的貪婪和非貪婪模式
下面給幾個例子 不加問號預設為貪婪 var reg a.c var string aaaccaa var result string.match reg aaacc 加上問號為非貪婪 var reg a.c var string aaaccaa var result string.match reg...