2013-03-23 40 views
0

我有以下方法:如何解析来自HTML标签链接地址

public void parse(){ 
    String x = "<p><a href=\"http://WWW.xxxx.COM\" class=\"url\" target=\"_blank\">Website for xxxx</a></p>"; 
    int start = 0; 
    int end = 0; 
    for (int i = 0; i < x.length(); i++){ 
     start++; 
     if (x.charAt(i) == '\"'){ 
      start = i; 
     }    
    } 
    System.out.println(x.substring(start)); 
} 

如何从字符串中删除标记,所以我可以为最终结果: www.xxxx.com

+0

你想www.xxxx.com只?或与http – stinepike 2013-03-23 05:15:24

+0

是的,如果可能的话没有http – coco 2013-03-23 05:16:15

+1

你还想等待答案时收到一杯温暖的咖啡吗?哦,你也可以要求一个cookie。 – 2013-03-23 05:18:41

回答

0

使用替代像方法这个:

String x = "<p><a href=\"http://WWW.xxxx.COM\" class=\"url\" target=\"_blank\">Website for xxxx</a></p>"; 
    String result = x.replaceAll(".*href=\"http://([^\"]*)\".*", "$1"); 

希望它适合你。

+0

是的,非常感谢。你能解释一下“。* href = \”http://([^ \“] *)的语法吗?”“*”,“$ 1” – coco 2013-03-23 05:26:32

+0

。* href = \“http://([^ \ *]匹配href =“http:// [^ \”] *之前的字符数匹配除/之外的任何字符“括号()告诉ajva它的一个子组(由$ 1表示,即在这里匹配的部分将被存储为$ 1替换 \“匹配” 。*匹配任意数量的字符(任何类型的字符) *实际上是指任意数量的字符 。表示任何字符 。*表示任意数量的任何类型的字符 – 2013-03-23 06:21:09

0

如果你不想使用正则表达式,你也可以这样做。

String x = "<p><a href=\"http://WWW.xxxx.COM\" class=\"url\" target=\"_blank\">Website for xxxx</a></p>"; 
    x = x.substring(x.indexOf("/") + 2); // or x = x.substring(x.indexOf("W")); 
    x = x.substring(0, x.indexOf("\"")); 
    System.out.println(x); 
0

你可以做到这一点,如下图所示:

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class RegexTest { 

    public static void main(String[] args) { 
     String strYourText = "<p><a href=\"http://WWW.xxxx.COM\" class=\"url\" target=\"_blank\">Website for xxxx</a></p>"; 
     Matcher matcher = Pattern.compile("href=\"(.*?)\"").matcher(strYourText); 
     while (matcher.find()) { 
      System.out.println(matcher.group(1)); 
     } 
    } 
}