如何使用img解析href

时间:2012-10-02 21:43:40

标签: java html parsing

 <a href="$handler$&landing_url=https://foo.com/index.html">
  <img src="https://foo.com/images/08_180x80.gif" border="0" alt="">
</a>

我有这个代码,我需要返回呼叫服务。但是,在返回时,我需要用来自props文件的东西替换$ handler $。这很容易。

困难的部分是:

我需要获取landing_url,对其进行加密,并向其添加更多信息。

我如何将这个片段解析成碎片?

还是有更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

这是您需要的正则表达式:/<a href=\".*?landing_url=(.*?)\">/

将所有代码放在一起:

public static void main(String[] args) {
    String str = "<a href=\"$handler$&landing_url=https://foo.com/index.html\">";
    String regex = "<a href=\".*?landing_url=(.*?)\">";
    List<String> parts = evaluate(regex, str);
    System.out.println("landing_url: " + parts.get(0));
}

public static List<String> evaluate(String regex, String line) {
    List<String> result = new ArrayList<String>();
    Pattern pattern = Pattern.compile(regex);

    int count = 1;
    Matcher matcher = pattern.matcher(line);
    while (matcher.find()) {
        result.add(matcher.group(count++));
    }
    return result;
}

答案 1 :(得分:0)

在java中有几种方法可以做到这一点。

我想正确答案取决于:

  1. 您需要的解析机制有多强大
  2. href值字符串的唯一性和
  3. 您是否已经安装了HTML解析器。
  4. 假设您已经有了一个HTML解析器,并且您实际上可以获取该标记的href属性值,从字符串中获取landing_url的最简单方法是使用String类的方法。虽然这些方法提供了快速而肮脏的解决方案,但它们可能不够强大,无法满足字符串的所有排列。

    这是一些需要考虑的伪代码,它不会超级高效或强大,但它可以完成工作。

    (assuming the value is in String hrefValue)
    int x = hrefValue.indexOf("landing_url");
    int substringStart = "landing_url=".length();
    String substring = hrefValue.substring(substringStart);