扫描模式时,如何在字符串中检查一系列浮点数



基本上,我试图使用HTTP GET请求从网站中提取数据。我创建了一个扫描程序,它查看从GET请求中提取的所有信息。我的问题是如何让扫描仪识别此所需模式中的浮点值范围。模式如下: "<strong> x k</strong> <div class="match_details_cell_label">Gold</div>"

上面的字母 x 表示可能在 [0.0-50.0] 范围内的浮点数。我的问题是我如何向扫描仪表示这一点。我熟悉如何检查整数是否在一组值内,但是如何在扫描时合并"范围"的概念?

    GetGameInfo http = new GetGameInfo();
    System.out.println("Testing 1 - Send Http GET request");
    Scanner lolscan = new Scanner(http.sendGet());
    String gameGold = 
            lolscan.next("<strong>" + [0-30] + "k</strong><div class="match_details_cell_label">Gold</div>");

如您所见,我尝试连接一系列可接受的值,但我认为这不是正确的方法。有什么建议吗?

不要使用正则表达式来解析 HTML!! https://stackoverflow.com/a/1732454/1768232

改用 JSoup 或 JSoup Maven,例如:

List<Double> doubles = new LinkedList<>();
Document doc = Jsoup.connect(url).get();
Elements elem = doc.select("strong");
for(Element element : elem) { 
    try {
        doubles.add(Double.valueOf(elem.text()));
    } catch (NumberFormatException e) {
        // handle it
    }
}

你在这里遇到的问题:

  1. 正则表达式在解析 HTML 时很糟糕。举个例子是,<strong><foo/>30.0</strong>...会失败你想出的任何合理的正则表达式,但可能应该在这里通过你的测试。我一直在 HTML 上使用正则表达式,但您应该记住,当您想向某人显示它未加载时,这就像用枪指着你的脚并扣动扳机。
  2. 您的代码在语法上无效。 Scanner#next提出了一个String论点。
  3. [0-30]是一个字符类,只匹配一个字符,即0123之一。 可能不是你的意思。

正则表达式与"0.0 到 50.0 之间的数字"等内容不匹配。 最好匹配所有数字,然后让 Java 解析它们并将它们进行数字比较。

最新更新