Regex-如何获取时间和日期以及ISO8601时间戳
我有这篇课文Regex-如何获取时间和日期以及ISO8601时间戳,regex,Regex,我有这篇课文 2014-01-30 10:15 some text here 2014-01-30 10:20 some other text here 我需要一个与ISO8601格式的时间戳组匹配的正则表达式 所需输出: 2014-01-30T10:15Z 2014-01-30T10:20Z 使用这个正则表达式,我无法得到我想要的,用't'替换空格,并在末尾附加一个'Z' ^(?<timestamp>\S+ \S+) ^(?\S+\S+) 有人知道如何解决这个问题吗 ---
2014-01-30 10:15 some text here
2014-01-30 10:20 some other text here
我需要一个与ISO8601格式的时间戳组匹配的正则表达式
所需输出:
2014-01-30T10:15Z
2014-01-30T10:20Z
使用这个正则表达式,我无法得到我想要的,用't'替换空格,并在末尾附加一个'Z'
^(?<timestamp>\S+ \S+)
^(?\S+\S+)
有人知道如何解决这个问题吗
---更新---
顺便说一句,我正在使用来测试我的正则表达式
\d{4}-\d{2}-\d{2}\d{2}:\d{2}
将匹配所需的格式–不过验证是另一回事(如果需要的话)
您可以执行类似于if(正则表达式匹配){replace''为“T”;append“Z”}
如果这对你没有帮助或者不清楚,那是因为你的问题含糊不清
编辑:您没有指定要用什么语言编写此文件。这就是您进行替换的方式。
\d{4}-\d{2}-\d{2}\d{2}:\d{2}
将匹配所需的格式–不过验证是另一回事(如果您需要)
您可以执行类似于if(正则表达式匹配){replace''为“T”;append“Z”}
如果这对你没有帮助或者不清楚,那是因为你的问题含糊不清
编辑:您没有指定要用什么语言编写此文件。这就是替换的方法。您可以稍微修改一下当前的正则表达式:
^(\S+) (\S+).*
并替换为$1T$2Z
您可以稍微修改一下当前的正则表达式:
^(\S+) (\S+).*
并替换为$1T$2Z
带有:
(\d{4}-\d{2}-\d{2})( \d{2}:\d{2} )(?:.*)
您可以分组捕获2014-01-30 10:15(并忽略另一组中的文本)
然后用第二组(10:15)在开头加上“T”,在结尾加上“Z”
^(?<timestamp>\S+ \S+)
请参见演示:
带有:
(\d{4}-\d{2}-\d{2})( \d{2}:\d{2} )(?:.*)
您可以分组捕获2014-01-30 10:15(并忽略另一组中的文本)
然后用第二组(10:15)在开头加上“T”,在结尾加上“Z”
^(?<timestamp>\S+ \S+)
请参见演示:
在php中:
preg_replace('/^(\S+) (\S+).*/', "$1T$2Z", $str);
在perl中:
$str =~ s/^(\S+) (\S+).*/$1T$2Z/;
在记事本里++
查找内容:^(\S+)(\S+).*
替换为:php中的
$1T$2Z
:
preg_replace('/^(\S+) (\S+).*/', "$1T$2Z", $str);
在perl中:
$str =~ s/^(\S+) (\S+).*/$1T$2Z/;
在记事本里++
查找内容:^(\S+)(\S+).*
替换为:
$1T$2Z
不同语言的Regex有点不同,如果您告诉我们您使用的语言,它可能会有所帮助。
例如,在javascript中,您可以执行以下操作:
"2014-01-30 10:15 some text here".replace(/(\d{4}-\d{2}-\d{2})\s(\d{2}:\d{2})\s?.*/,"$1T$2Z")
其中字符串可以是变量
如果有多行文本,则应在正则表达式末尾添加一个g
:
"2014-01-30 10:15 some text here\n2014-01-30 10:20 some other text here".replace(/.*(\d{4}-\d{2}-\d{2})\s(\d{2}:\d{2})\s?.*/g,"$1T$2Z")
正则表达式在不同的语言中有点不同,如果您告诉我们您使用的是什么语言,它可能会有所帮助。 例如,在javascript中,您可以执行以下操作:
"2014-01-30 10:15 some text here".replace(/(\d{4}-\d{2}-\d{2})\s(\d{2}:\d{2})\s?.*/,"$1T$2Z")
其中字符串可以是变量
如果有多行文本,则应在正则表达式末尾添加一个g
:
"2014-01-30 10:15 some text here\n2014-01-30 10:20 some other text here".replace(/.*(\d{4}-\d{2}-\d{2})\s(\d{2}:\d{2})\s?.*/g,"$1T$2Z")
我想要一个做替换作业的正则表达式正则表达式不做替换,它只匹配。然后你需要做替换部分的代码。我想要一个做替换作业的正则表达式正则表达式不做替换,它只匹配。然后,您需要执行替换部件的代码。您已经反转了
T
和Z
-o@M42哎呀。。。D:现在修好了,谢谢你的注意!“那怎么办?”ლ(ಠ_ಠლ) ლ(ಠ_ಠლ)"? 在我看来不像是时间戳。@tenub可能不是,但౨౩౨౩-౨౩-౨౩ ౨౩:౨౩
。我的观点是,我非常确定OP总是有特定格式的字符串,这就是为什么他们首先使用\s+
。有些人使用非拉丁数字,不要这么偏袒。此外,他还明确指出:“我需要一个与ISO 8601格式的时间戳组匹配的正则表达式。“你倒了T
和Z
-o@M42哎呀……D:现在修好了,谢谢你的注意!那怎么办?”ლ(ಠ_ಠლ) ლ(ಠ_ಠლ)"? 在我看来不像是时间戳。@tenub可能不是,但౨౩౨౩-౨౩-౨౩ ౨౩:౨౩
。我的观点是,我非常确定OP总是有特定格式的字符串,这就是为什么他们首先使用\s+
。有些人使用非拉丁数字,不要这么偏袒。此外,他还指定:“我需要一个与ISO 8601格式的时间戳组匹配的正则表达式。”