当前位置: 首页 > 面试题库 >

Java:我有一个很大的html字符串,需要提取href =“…”文本

仲孙夕
2023-03-14
问题内容

我有一个包含很大一部分html的字符串,并且正在尝试从字符串的href =“ …”部分提取链接。href可以采用以下形式之一:

<a href="..." />
<a class="..." href="..." />

我真的没有正则表达式的问题,但是由于某些原因,当我使用以下代码时:

        String innerHTML = getHTML(); 
  Pattern p = Pattern.compile("href=\"(.*)\"", Pattern.DOTALL);
  Matcher m = p.matcher(innerHTML);
  if (m.find()) {
   // Get all groups for this match
   for (int i=0; i<=m.groupCount(); i++) {
    String groupStr = m.group(i);
    System.out.println(groupStr);

   }
  }

有人可以告诉我我的代码有什么问题吗?我在php中做过这些事情,但是在Java中我却以某种方式做错了什么。正在发生的事情是,每当我尝试打印它时,它都会打印整个html字符串…

编辑:以便每个人都知道我正在处理哪种字符串:

<a class="Wrap" href="item.php?id=43241"><input type="button">
    <span class="chevron"></span>
  </a>
  <div class="menu"></div>

每当我运行代码时,它都会打印整个字符串…这就是问题所在…

关于使用jTidy …我正在研究它,但是知道在这种情况下出了什么问题也很有趣…


问题答案:
.*

这是一个贪婪的操作,它将使用包括引号在内的任何字符。

尝试类似的方法:

"href=\"([^\"]*)\""


 类似资料:
  • 问题内容: 我需要清理来自各种Microsoft Office套件应用程序(Excel,Access和Word)的字符串(复制/粘贴),每个应用程序都有自己的一组编码。 我将json_encode用于调试目的,以便能够看到每个编码的字符。 我可以使用str_replace清除到目前为止找到的所有内容(\ r \ n),但是使用\ u00a0则没有运气。 返回: 那是完全一样的。它完全忽略\ u00

  • 我需要把绳子接上 到目前为止,我有这个,但不知道如何截断实际的“字符串分隔符”:

  • 问题内容: 我试图提取一个子字符串。我需要在PHP中做一些帮助。 以下是一些我正在使用的示例字符串以及需要的结果: 我想将字符串保留到第一个,但是如果不存在,请获取整个字符串。 我试过了, 我认为它说-获取位置,然后从位置0到 该 位置获取子字符串。 我不知道如何处理不存在的情况,而又不会使声明太大。 有没有一种方法也可以处理这种情况而又不会使PHP语句过于复杂? 问题答案: 采用 在这种情况下,

  • 问题内容: 我尝试获取<%=和%>之间的字符串,这是我的实现: 它返回 但我的期望是: 我在哪里错了以及如何纠正它? 问题答案: 您的模式很好。但是,您不应该轻信它,应该这样做。以下代码提供了您正在寻找的输出:

  • 我试图创建一个项目,我需要从imdb中提取数据。我看过一些php提取器,但我需要一个java程序来实现这一点。我需要提取以下信息: 电影名称和年份 小地块 评分 体裁 演员 我需要从以下数据中提取数据: 该数据来自imdbapi。如果有帮助的话。让我知道是否有任何其他方法以任何其他方式提取此数据,我指的是以更结构化的形式显示此数据的其他方式。喜欢excel。