正则表达式匹配超过它应该

时间:2015-03-29 05:36:03

标签: java regex

我这样做:

List<String> listOfLinks = new ArrayList<String>();

String regex = startMatch + "(.*)" + endMatch;
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(html);
    while (matcher.find()) {
        listOfLinks.add(matcher.group(1));
    }

正则表达式的值为:

class="thumb-link" href="(.*)" titl

我得到了这个结果:

http://www.sportscraft.com.au/longline-vest--9344961510736.html" title="Longline Vest "> <img class="alpha" src="http://demandware.edgesuite.net/sits_pod19/dw/image/v2/AAJZ_PRD/on/demandware.static/Sites-Sportscraft-Site/Sites-sc-master/default/v1427554286311/images/hi-res/1102031_black_a.jpg?sw=180&amp;sh=215&amp;sm=fit" alt="Longline Vest , BLACK, hi-res" title="Longline Vest , BLACK" height="214" /> <img class="beta" src="http://demandware.edgesuite.net/sits_pod19/dw/image/v2/AAJZ_PRD/on/demandware.static/Sites-Sportscraft-Site/Sites-sc-master/default/v1427554286311/images/hi-res/1102031_black_b.jpg?sw=180&amp;sh=215&amp;sm=fit" alt="Longline Vest , BLACK, hi-res

当我想要的只是:

http://www.sportscraft.com.au/longline-vest--9344961510736.html

这意味着,正则表达式class="thumb-link"的第一部分工作正常。但第二部分" titl并没有在第一次匹配时停止。它一直持续到发现另一次出现为止。

当我使用相同的正则表达式在http://myregexp.com/上测试时,我得到了正确的结果。我想我需要设置一些选项来使这个“非贪婪”但不确定哪个,因为我无法在正则表达式测试器中重现错误。

1 个答案:

答案 0 :(得分:1)

尝试使用以下内容:

String regex = "^(.*?[^ ]) .*?";//remove ^, i have tried on your input string.
Output:
[http://www.sportscraft.com.au/longline-vest--9344961510736.html"]