Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex-如何获取时间和日期以及ISO8601时间戳_Regex - Fatal编程技术网

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格式的时间戳组匹配的正则表达式。”