我一直在尝试解决这个问题一段时间,但仍然没有找到答案。目的是从 HTML 网页中获取一些数据。我可以做所有与互联网相关的部分,但我遇到了问题。这是我的字符串:
类=“数据流图值”> 496
问题是那些引号,否则我的应用程序将能够获得“496”,这是重要的数据,但是有了它们,我无法获得我的数据。
哪个是获取这些数据的好方法?(请注意,在“>”符号之后有一个“\n”)
谢谢小伙伴们!
我一直在尝试解决这个问题一段时间,但仍然没有找到答案。目的是从 HTML 网页中获取一些数据。我可以做所有与互联网相关的部分,但我遇到了问题。这是我的字符串:
类=“数据流图值”> 496
问题是那些引号,否则我的应用程序将能够获得“496”,这是重要的数据,但是有了它们,我无法获得我的数据。
哪个是获取这些数据的好方法?(请注意,在“>”符号之后有一个“\n”)
谢谢小伙伴们!
虽然我通常不推荐正则表达式来读取 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"));
}
}