如何使用powershell在-replace中更改替换变量的大小写

时间:2016-02-05 09:54:22

标签: powershell

我尝试使用类似的东西来改变文件中的东西(实际上是数千个文件)...

ls *.pro | ForEach-Object {
    (Get-Content -Path $_.FullName) -replace "sender_name\(\s*``([^``]+)``\s*\)", 'sender_name( `$1` )'
}

我不知道如何获得替换变量,$ 1为小写(或更好,适当的情况)

1 个答案:

答案 0 :(得分:0)

-replace运算符不支持对替换字符串进行花哨的后处理。您必须在每行使用Regex.Replace()

# Define your regex matcher
$Regex = [regex]'sender_name\(\s*`([^`]+)`\s*\)'

Get-ChildItem *.pro |ForEach-Object {
    Get-Content $_.FullName |ForEach-Object {
        # Replace using a match evaluator
        $Regex.Replace($_,{param($MatchInfo) $MatchInfo.Groups[1].Value.ToLower()})
    }
}