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会将任何$符号解释为对先前定义的变量的引用,在这种情况下将导致字符串,"--"因为不存在此类变量.