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ファイルから取得したものに置き換える必要があります。これは簡単です。

難しい部分は:

landing_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 に答える