如何使用正则表达式使用Powershell替换文本文件中的日期

Ash*_*tos 10 regex powershell replace date

我已经做了很多搜索,并没有找到答案,但我觉得我很亲密!

我在文本文件中的日期格式如下:18/06/2012 23:00:43 (dd/mm/yyyy HH:MM:SS)我要转换为:2012-18-06 23:00:43 (yyyy-dd-mm HH:MM:SS)使用Powershell.

要使用正则表达式在文本编辑器中执行转换,我会这样做:

Find: ([0-9]+)/+([0-9]+)/+([0-9]+)

Replace with: \3-\2-\1
Run Code Online (Sandbox Code Playgroud)

所以我尝试在以下Powershell脚本中使用相同的逻辑:

(Get-Content C:\script\test.txt) | 
Foreach-Object {$_ -replace "([0-9]+)/+([0-9]+)/+([0-9]+)", "(\3-\2-\1)"} | 
Set-Content C:\script\test.txt
Run Code Online (Sandbox Code Playgroud)

但这导致以下不希望的变化:

\ 3-\\ 2-\1 23:00:43

任何人都可以帮我解决这个问题吗?

提前谢谢了!

Mic*_*ers 22

这就是你想要的:

(Get-Content C:\script\test.txt) | 
Foreach-Object {$_ -replace "([0-9]+)/+([0-9]+)/+([0-9]+)", '$3-$2-$1'} | 
Set-Content C:\script\test.txt
Run Code Online (Sandbox Code Playgroud)

捕获组引用是使用$符号完成的,而不是反斜杠.此外,要按编号引用捕获的组,必须在替换字符串周围使用单引号 ; 否则,PowerShell会将任何$符号解释为对先前定义的变量的引用,在这种情况下将导致字符串,"--"因为不存在此类变量.