貪婪模式和非貪婪模式
阿新 • • 發佈:2018-12-10
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()) )