【问题标题】:What would be the correct regular expression for extracting a href from a html line? (Java)从 html 行中提取 href 的正确正则表达式是什么? (爪哇)
【发布时间】:2012-01-03 05:32:27
【问题描述】:

您好,我正在尝试提取 href 在 html 行中定义的文本。例如:

<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 代码是什么?

【问题讨论】:

标签: java html regex


【解决方案1】:

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

'Pattern.compile("<(?:link|a\s+)[^>]*href=\"(.*?)\"")'

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

【讨论】:

    【解决方案2】:

    我知道你问过关于使用正则表达式的问题,但 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"));
            }
        }
    }
    

    【讨论】:

      【解决方案3】:
          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,但我相信您可以从这里推断出来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-07
        • 1970-01-01
        • 2014-05-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多