abcdefgdogcat
- 貪婪,
就是盡可能多的匹配。
例如a.*d
匹配的就是abcdefgd
,如果后面還有那么匹配結果很更長,直到遇到.
無法匹配的換行符。
- 非貪婪,
那就是知足常樂了,取第一次滿足的匹配結果。
那么a.*?d
匹配的就是abcd
今天遇到的就是使用這句匹配圖片鏈接時出的問題
http:.+\\.jpg
原因是網頁img標簽是這樣的
<img src="http://67.media.tumblr.com/a14f4a939315db6bd9fb6abf953db1d4/tumblr_ofss6etMDT1r2xjmjo1_1280.jpg" data-highres="http://67.media.tumblr.com/a14f4a939315db6bd9fb6abf953db1d4/tumblr_ofss6etMDT1r2xjmjo1_1280.jpg" />
這樣每次取的結果都是
http://67.media.tumblr.com/a14f4a939315db6bd9fb6abf953db1d4/tumblr_ofss6etMDT1r2xjmjo1_1280.jpg" data-highres="http://67.media.tumblr.com/a14f4a939315db6bd9fb6abf953db1d4/tumblr_ofss6etMDT1r2xjmjo1_1280.jpg
查了好半天才知道非貪婪的方式http:.+?\\.jpg
。
貪婪:
{m,n}:m到n個
*:任意多個
+:一個到多個
?:0或一個
非貪婪:
*? 重復任意次,但盡可能少重復
+? 重復1次或更多次,但盡可能少重復
?? 重復0次或1次,但盡可能少重復
{n,m}? 重復n到m次,但盡可能少重復
{n,}? 重復n次以上,但盡可能少重復