【问题标题】:How to set date format using regex using jsoup java如何使用 jsoup java 使用正则表达式设置日期格式
【发布时间】:2016-05-18 12:15:02
【问题描述】:

我正在从网站上抓取数据并将数据存储在 csv 文件中。有一个日期即将到来的 td,格式为 'dd/m/yyyy'。现在我必须做的是,只要日期出现在那个 td 中,我就必须打印 1。所以,我用下面的代码试了一下。

if (tdElements.text().matches("\\d+\\/\\d+\\/\\d+")) {
                    sb.append("1");
                }

但它不起作用。通过使用“匹配”,实际日期(2016 年 5 月 18 日)也不起作用,但它正在使用包含。但是,正则表达式也不适用于“包含”,所以请为我提供解决方案,我该如何解决我的问题。

【问题讨论】:

    标签: java regex date web-scraping jsoup


    【解决方案1】:
    if (tdElements.text().matches("\\d+\\/\\d+\\/\\d+")) {
       sb.append("1");
    }
    

    上面的代码表明你同时操作多个tds。
    text() 方法将返回tds 的组合文本。
    这就是matches 方法什么也找不到的原因。

    相反,对每个 td 的文本运行正则表达式,如下所示:

    Matcher dateMatcher = Pattern.compile("\\d+\\/\\d+\\/\\d+").matcher("");
    
    Document doc = ...
    Elements tdElements = doc.select(...);
    
    for(Element td : tdElements) {
        if (dateMatcher.reset(td.ownText()).matches()) {
            sb.append("1");
        }
    }
    

    【讨论】:

    • 通过添加上面的代码,它会给出以下错误...“非静态变量 dateMatcher 不能从静态上下文中引用----”
    • @AhmedTalha 上面的整个代码应该在方法体中使用。
    • sorrysorry...我实际上是在方法之外定义 Matcher.. 非常感谢 Stephan 它的工作人员...
    猜你喜欢
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2012-10-09
    • 2012-06-20
    相关资源
    最近更新 更多