2011-11-21 66 views
0

您好我想提取一个href在html行中定义的文本。例如:什么是从html行中提取href的正确正则表达式? (Java)

<link rel="stylesheet" href="style.css" type="text/css"> 

我想 “style.css文件” 或:

<a href="target0.html"><img align="center" src="thumbnails/image001.jpg" width="154" height="99"> 

我想 “target0.html”

什么是正确的Java代码做这个?

+2

我觉得对这个问题的答案是你在找什么: HTTP: //download.csdn.net/questions/1670593/java-i-have-a-big-string-of-html-and-need-to-extract-the-href-text – DiogoDoreto

+0

@DiogoDoreto谢谢你的回复。你提到的问题的答案很好。 –

+0

强制性的SO链接:http://stackoverflow.com/questions/1732348阅读最有价值的答案; ) – TacticalCoder

回答

1
public static String getHref(String str) 
    { 
     int startIndex = str.indexOf("href="); 
     if (startIndex < 0) 
      return ""; 
     return str.substring(startIndex + 6, str.indexOf("\"", startIndex + 6)); 
    } 

这种方法假定HTML结构良好,它仅适用于字符串中的第一个HREF,但我敢肯定,你可以从这里推断。

0

我还没有尝试以下方法,但它应该是这样的:

“Pattern.compile( “<(?:链接| A \ S +)[^>] HREF = \”( ?)\“”)'

但我建议您使用可用的HTML甚至XML解析器之一来完成此任务。

1

我知道你问有关使用正则表达式,但jsoup使得这个如此简单,误差更容易:

import java.io.IOException; 

import nu.xom.ParsingException; 
import nu.xom.ValidityException; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 
import org.xml.sax.SAXException; 

public class HrefExtractor { 
    public static void main(final String[] args) throws SAXException, ValidityException, ParsingException, IOException { 
     final Document document = Jsoup.parse("<a href=\"target0.html\"><img align=\"center\" src=\"thumbnails/image001.jpg\" width=\"154\" height=\"99\">"); 
     final Elements links = document.select("a[href]"); 
     for (final Element element : links) { 
      System.out.println(element.attr("href")); 
     } 
    } 
} 
+0

你说得对。谢谢您的回答。下次我将使用HTML解析器,但现在我会坚持使用正则表达式。 –