0

我一直在尝试解决这个问题一段时间,但仍然没有找到答案。目的是从 HTML 网页中获取一些数据。我可以做所有与互联网相关的部分,但我遇到了问题。这是我的字符串:

类=“数据流图值”> 496

问题是那些引号,否则我的应用程序将能够获得“496”,这是重要的数据,但是有了它们,我无法获得我的数据。

哪个是获取这些数据的好方法?(请注意,在“>”符号之后有一个“\n”)

谢谢小伙伴们!

4

1 回答 1

1

虽然我通常不推荐正则表达式来读取 xml,但带有 XML 解析器的 HTML 可能是一场噩梦。

使用以下示例。

<a class="datastream-graph-value" href="http=blah" > 496</a>
<a class="other"> 496</a>

使用下面的正则表达式应该可以很好地处理它。

(class=["][^>"]*["])

给出了如何使用该正则表达式的一个很好的例子。 http://www.vogella.com/articles/JavaRegularExpressions/article.html

如果您需要代码示例回复,我们会看到我们无法解决的问题。

编辑:

我很无聊,所以我想为什么不把样品放在一起

package temp;


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

public class RegexTestPatternMatcher {
  public static final String EXAMPLE_TEST = "<a class=\"datastream-graph-value\" href=\"http=blah\" > 496</a> <a class=\"other\"> 496</a>";

  public static void main(String[] args) {
    Pattern pattern = Pattern.compile("(class=[\"][^>\"]*[\"])");
    // In case you would like to ignore case sensitivity you could use this
    // statement
    // Pattern pattern = Pattern.compile("\\s+", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(EXAMPLE_TEST);
    // Check all occurance
    while (matcher.find()) {
      System.out.print("Start index: " + matcher.start());
      System.out.print(" End index: " + matcher.end() + " ");
      String match = matcher.group();
      match = match.replace("class=", "");
      System.out.println(match);
    }
    // Now create a new pattern and matcher to replace whitespace with tabs
    Pattern replace = Pattern.compile("\\s+");
    Matcher matcher2 = replace.matcher(EXAMPLE_TEST);
    System.out.println(matcher2.replaceAll("\t"));
  }
} 
于 2012-12-09T14:36:49.340 回答