繁体   English   中英

在大于小于之间获取数据

[英]Grabbing Data between Greater than Less Than

我主要是一位在Java方面有少许经验的SQL程序员。

直到现在为止,我都不会厌倦我编写的所有代码。 但是在这一点上,我试图从股票市场站点中提取数据,并将该数据放入创建CSV的文件中。

我正在逐行检索html代码,该代码使用td和/ td打开和关闭列。 我想抓住比符号和小于号大的数据,然后移动到下一个。 只是努力弄清楚这一点,而又不会使其变得太复杂。

说明预期和实​​际的结果:

所以如果我有

<td class="blah" class="blah">STOCK</td><td class="blah" class="blah">STOCK COMPANY NAME</td>

我想将STOCK转换为字符串,然后再选择STOCK公司名称。

我需要的是> ***** <...之间的代码,仅此而已,因为我很喜欢学习过程,只是被困了几个小时。

您可以将正则表达式与-look和back-ahead一起使用- (?<=>).*?(?=<)
(?<=>)表示前面有大于号
.*? 匹配任意数量的字符,非贪婪
(?=<)后跟一个小于号

String input = "<td class=\"blah\" class=\"blah\">STOCK</td><td class=\"blah\" class=\"blah\">STOCK COMPANY NAME</td>";
Matcher matcher = Pattern.compile("(?<=>).*?(?=<)").matcher(input);
List<String> res = new ArrayList<>();
while (matcher.find()) res.add(matcher.group());
res = res.stream().filter(s -> !s.isEmpty()).collect(Collectors.toList()); //remove empty strings
System.out.println(res);

输出量

[STOCK, STOCK COMPANY NAME]

注意 :最好改用HTML解析器,例如jsoup

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM