正则表达式根据旁边的内容挑选PowerShell中的正确时间

时间:2013-07-11 10:22:25

标签: regex datetime powershell time scripting

我正在使用带有正则表达式的powershell来尝试从“01:42:35”下面的行中提取以下时间。但是我想忽略时间“02:42:35”,但我不确定该怎么做。

2013-07-04 02:42:35警报172.172.19.9 Jul 4 01:42:35 ...

目前我正在使用此时正则表达式:$time_regex = "(\d+):(\d+):(\d+)" 如何使其符合上述规范?

注意:我想要获得的时间不在行的末尾,第二次总是以“Jul 4”格式在其旁边有一个日期,而第一次在它旁边有一个日期格式“2013-07-04”

由于

2 个答案:

答案 0 :(得分:1)

$time_regex = "(?<=\w+ \d+ )(\d+):(\d+):(\d+)"

只匹配一个前面有字母数字“word”和数字的时间字符串。

答案 1 :(得分:1)

如果总是在行的末尾使用:

$t = "2013-07-04 02:42:35 Alert 172.172.19.9 Jul 4 01:42:35"
 [regex]::match( $t, "(\d+:){2}(\d+)$" )  | select -expa value

评论后编辑:

试试这个:

$time_regex  = "(?<= \d+ )(\d+:){2}\d+"