貪婪模式和非貪婪模式

2022-08-21 09:42:08 字數 920 閱讀 8913

#正規表示式通常使用於查詢匹配的字串。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 貪婪模式和非貪婪模式.py

2 ('

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 貪婪模式和非貪婪模式.py

2 ('

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...