R中yyyy mm dd hh mm ss的正则表达式(无标点)

时间:2018-08-29 10:57:22

标签: r regex

我正在尝试对日期时间使用正则表达式。问题是我的字符串没有标点符号,因此不是像yyyy-mm-dd hh:mm:ss那样具有以下信息,而是这样的 yyyy mm dd hh mm ss

您知道与这种格式匹配的正则表达式吗?

6 个答案:

答案 0 :(得分:4)

您可以使用strptime转换为POSIXt

strptime("1982 03 17 05 24 54", "%Y %m %d %H %M %S")
#output
[1] "1982-03-17 05:24:54 CET"

答案 1 :(得分:1)

您可以使用\\ d {n},其中n是数字位数。示例:

grepl("\\d{4} \\d{2} \\d{2} \\d{2} \\d{2} \\d{2}", "1995 04 30 10 15 00")

[1] TRUE

您也可以使用\\ s作为空格

grepl("\\d{4}\\s\\d{2}\\s\\d{2}\\s\\d{2}\\s\\d{2}\\s\\d{2}", "1995 04 30 10 15 00")

[1] TRUE

答案 2 :(得分:1)

显示的格式可以使用anytime

自动选择
anytime::anytime("1982 03 17 05 24 54")
#[1] "1982-03-17 05:24:54 EST"

答案 3 :(得分:0)

正则表达式本身非常简单。

(\d{4}) (\d{2}) (\d{2}) (\d{2}) (\d{2}) (\d{2})

它只与数字匹配一定的时间(年份为4,其余时间为2)。

另一件事是,您没有时间,但是没有纯字符串,那么您必须将其转换为日期。我建议您将其他函数/工具用作正则表达式。

答案 4 :(得分:0)

在正则表达式中添加开始^和结束$锚。

(preg_match("/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/"))

答案 5 :(得分:0)

一种方法是,您可以用'-'或'/'替换空格,然后再次尝试regExp。希望对您有所帮助。

        var stringDate = '2018 8 29 09 09 09';
        var pattern = new RegExp("^[0-9]{4} (3[01]|[12][0-9]|0[1-9]) (1[0- 
                       2]|0[1-9]) (2[0-3]|[01]?[0-9]) ([0-5]?[0-9]) ([0-5]?[0-9])$");

        if (stringDate.search(pattern) === 0) {
            return true;
        }

此处,此模式适用于您的日期格式。希望现在能对您有所帮助:)