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次以上,但尽可能少重复