我尝试使用类似的东西来改变文件中的东西(实际上是数千个文件)...
ls *.pro | ForEach-Object {
(Get-Content -Path $_.FullName) -replace "sender_name\(\s*``([^``]+)``\s*\)", 'sender_name( `$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()})
}
}