<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,对其进行加密,并向其添加更多信息。
我如何将这个片段解析成碎片?
还是有更简单的方法吗?
答案 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中有几种方法可以做到这一点。
我想正确答案取决于:
假设您已经有了一个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);