2

我正在使用带有正则表达式的 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"

谢谢

4

2 回答 2

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

只会匹配前面有字母数字“单词”和数字的时间字符串。

于 2013-07-11T10:25:38.177 回答
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+"
于 2013-07-11T10:27:11.183 回答