1. 程式人生 > >貪婪模式和非貪婪模式

貪婪模式和非貪婪模式

1.什麼是正則表示式的貪婪與非貪婪匹配

如:String str=“abcaxc”;

Patter p=“ab.*c”;

貪婪匹配:正則表示式一般趨向於最大長度匹配,也就是所謂的貪婪匹配。如上面使用模式p匹配字串str,結果就是匹配到:abcaxc(ab.*c)。

非貪婪匹配:就是匹配到結果就好,就少的匹配字元。如上面使用模式p匹配字串str,結果就是匹配到:abc(ab.*c)。

2.程式設計中如何區分兩種模式

預設是貪婪模式;在量詞後面直接加上一個問號?就是非貪婪模式。

量詞:{m,n}:m到n個

*:任意多個

+:一個到多個

?:0或一個

text="<div>aaa</div><div>bbb</div>ccc"

import re
pt1=re.compile(r"<div>.*</div>")
pt2=re.compile(r"<div>.*</div>?")

grouped1=pt1.match(text)
grouped2=pt2.match(text)
print ("貪婪模式:{}".format(grouped1.group()))
print ("非貪婪模式:{}".format(grouped2.group())
)

正則表示式貪婪與非貪婪模式