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

我有这个代码,我需要返回调用服务。但是,在返回时,我需要将 $handler$ 替换为从 props 文件中获得的内容。这很容易。

困难的部分是:

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

我怎样才能把这个片段解析成碎片?

或者有更简单的方法吗?

4

2 回答 2

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;
}
于 2012-10-02T22:18:14.010 回答
0

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

我想正确的答案取决于:

  1. 您需要的解析机制有多强大
  2. href 值字符串的唯一性,以及
  3. 无论您是否已经有一个 HTML 解析器。

假设您有一个 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);
于 2012-10-02T22:03:17.317 回答