1
私は正規表現で遊んでいて、もう少し複雑になっています。私はPowerShellの3.0を実行して、次のタイムスタンプを持っています:複数の置換を行うRegEx
2017-07-26T00:00:39Z私は、タイムスタンプから秒を除去し、00でそれらを置き換えるために、次のコードを使用し
を:タイムスタンプは、現在の形式で摂取しようとしているので、
$($_.Timestamp -replace '^(.*)(\d\d)(.*)$','${1}00$3')
は今私のユースケースはより複雑になった:
2017年8月17日0時○○分34秒
私はKML目印のタイムスタンプとして、それを正しく利用するために調整する形式を必要とするので、これは物事を複雑にしています。だから私はまだ秒を取り除いて00で置き換える必要がありますが、タイムスタンプのためにズールーを表すために、日付と時刻の間のスペースを置き換えるためにTと最後に付いたZも必要です。単一の正規表現で可能なことはありますか?
「不正確な」入力を処理する場合、Regexでは柔軟性が向上します。したがって、正規表現はここで必要かもしれませんが、OP正規表現の '。* '部分に注意してください。これは、タイムスタンプの後にゴミがあるかもしれないことを意味します。 –
PowerShellのほとんどのバージョン(v3 +だと思う)ではdatetimeオブジェクトを使って作業していますが、入力を '[datetime]'オブジェクトとしてキャストして、必要なだけ出力するだけです( 'datetime ')2017-08-17 16: 27:34 ')。ToString(' yyyy-MM-ddTHH:mm:00Z ')は、' 2017-08-17T16:27:00Z 'となります。あるいは、 'Get-Date'は、' get-date '2017-08-17 16:27:34' -f 'yyyy-MM-ddTHH:mm:00Z''で同じ出力を生成し、直ちに出力します。 – TheMadTechnician