正则表达式为什么结果只有一个的时候 可以匹配出来,多个就不行了,求救 !!!

正则:(?<=href='http://item.jd.com).*(?='><img width=)
目标:<li index='0'><div><a target='_blank' href='http://item.jd.com/482148.html'><img width='220' height='220' src='#'/></a></div></div><div><a target='_blank' href='http://item.jd.com/482148.html'>格兰仕</a></div></li><li index='1'><div><a target='_blank' href='http://item.jd.com/541367.html'><img width='220' height='220' src='#'/></a></div><div><a target='_blank' href='http://item.jd.com/541367.html'>TCL</a></div></li>
请高手帮我看看哪里错了,为什么匹配不出来。。。。。。

你的正则表达式中.*用的是贪婪模式所以匹配出来只有一个,
加一个问号即.*?变成非贪婪模式就可以匹配出多个了,你的例子中可以匹配两个,因为'><img width=在你的例子中只有两个.
总之,把正则表达式改成(?<=href='http://item.jd.com).*?(?='><img width=)可以匹配两个
把正则表达式改成(?<=href='http://item.jd.com).*?(?='>)可以匹配四个,在你的例子中.追问

你理解错了 我的目标是匹配出来两个结果,就是 http://item.jd.com 和 ('><img 中间的结果。

你这样的话 会得到四个结果。
谢谢 。。。。

追答

如果你想匹配出两个结果,正则表达式写成这样(?<img width=)就可以了,就是加个问号就行了.

追问

我要的是和这个正则结果一样的:(?<img width=)
你那个的结果不是我想要的。
不过 还是谢谢啦 、、、

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-07
你用的是最佳匹配,最容易理解的是采用判断语句,多次判断
相似回答