gpt4 book ai didi

regex - Powershell以字符串模式显示的5位数字格式

转载 作者:行者123 更新时间:2023-12-03 00:24:08 24 4
gpt4 key购买 nike

因此,我现在(下面)将搜索XX-##-#并将其强制为XX-##-#0000

我该怎么做才能返回XX-##-0000#

有没有办法在结尾处强制5位数字(填充前面的0)来覆盖其他可能性(XX-##-##XX-##-###XX-##-####)?与将其复制4次相比,每次略有调整。

$Pattern1 = '[a-zA-Z][a-zA-Z]-[0-9][0-9]-[0-9]'
Get-ChildItem 'C:\path\to\file\*.txt' -Recurse | ForEach {
(Get-Content $_ |
ForEach { $_ -replace $Pattern1, ('$1'+'0000')}) |
Set-Content $_
}

谢谢。

编辑:我想执行以下操作
Search           Replacement
XX-##-# XX-##-0000#
XX-##-## XX-##-000##
XX-##-### XX-##-00###
XX-##-#### XX-##-0####

最佳答案

不幸的是,PowerShell的-replace运算符不支持将表达式(脚本块)作为替换字符串传递,这在此处是简洁的解决方案。

但是,您可以使用the appropriate [regex] .NET type's .Replace() method overload:

注意:此解决方案仅针对基于正则表达式的替换部分,但是很容易将其嵌入到问题的较大管道中。

# Define sample array.
$lines = @'
Line 1 AB-00-0 and also AB-01-1
Line 2 CD-02-22 after
Line 3 EF-03-333 it
Line 4 GH-04-4444 goes
Line 5 IJ-05-55555 on
'@ -split "`n"

# Loop over lines...
$lines | ForEach-Object {
# ... and use a regex with 2 capture groups to capture the substrings of interest
# and use a script block to piece them together with number padding
# applied to the 2nd group
([regex] '\b([a-zA-Z]{2}-[0-9]{2}-)([0-9]+)').Replace($_, {
param($match)
$match.Groups[1].Value + '{0:D5}' -f [int] $match.Groups[2].Value
})
}

以上 yield :
Line 1 AB-00-00000 and also AB-01-00001
Line 2 CD-02-00022 after
Line 3 EF-03-00333 it
Line 4 GH-04-04444 goes
Line 5 IJ-05-55555 on

关于regex - Powershell以字符串模式显示的5位数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44416861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com