我正在尝试对日期时间使用正则表达式。问题是我的字符串没有标点符号,因此不是像yyyy-mm-dd hh:mm:ss那样具有以下信息,而是这样的 yyyy mm dd hh mm ss 。
您知道与这种格式匹配的正则表达式吗?
答案 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;
}
此处,此模式适用于您的日期格式。希望现在能对您有所帮助:)