2

正規表現でpowershellを使用して、「01:42:35」の下の行から次の時間を抽出しようとしています。ただし、時刻「02:42:35」を無視したいのですが、その方法がわかりません。

2013-07-04 02:42:35 アラート 172.172.19.9 7 月 4 日 01:42:35 ...

現在、この時間の正規表現を使用しています:$time_regex = "(\d+):(\d+):(\d+)" これを上記の仕様にどのように適合させることができますか?

注:取得しようとしている時間は行末ではなく、2回目は常に「7月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 に答える