无论字符串包含什么,有没有办法替换一组字符串? 我试图替换一个包含:引号(""),括号([]),@,e。
的字符串gci C:\test *.txt -recurse | ForEach {(Get-Content $_ | ForEach {$_ -replace '"my"', "money"}) | Set-Content $_ }
但是,如果我要替换的字符串在<>:
中有所有内容,那该怎么办?PowerPlayReport Product_version="10.2.6100.36" xmlns="http://www.cognos.com/powerplay/report[1234@1]" Author="PPWIN" Version="4.0"
答案 0 :(得分:1)
因此,您希望替换问题中包含的示例文本中的[]中的所有内容。如果你不知道(虽然我认为你现在)-replace
支持正则表达式。一个简单的正则表达式可以找到您正在寻找的文本。我也将删除代码中的一些冗余。
Get-ChildItem C:\test -Filter *.txt -Recurse | ForEach-Object{
$file = $_.FullName
(Get-Content $file) -replace "\[.*?]","[bagel]" | Set-Content $file
}
借用regex101.com的解释
\[
字面匹配字符[
.*?
匹配任何字符(换行符除外)。量词:*?
在零和无限次之间,尽可能少,根据需要扩展[懒惰] ]
字面匹配字符]
然后该行将在源文件中显示为以下内容。
PowerPlayReport Product_version="10.2.6100.36" xmlns="http://www.cognos.com/powerplay/report[bagel]" Author="PPWIN" Version="4.0"