用多个文件中的正则表达式替换字符串

时间:2018-02-27 18:35:35

标签: regex powershell notepad++

我有超过10000个文本文件要使用Notepad ++或PowerShell将字符串searchResult替换为该特定文本文件中的正则表达式。例如,这里是一个文本文件:

searchresult : [{"name": myRegexMatch .....}

替换后:

myRegexMatch : [{"name": myRegexMatch .....}

正则表达式匹配在每个文件中都不同。我只想用每个文件中的正则表达式替换searchResult

1 个答案:

答案 0 :(得分:3)

这应该让你开始

$regex = '(?<=searchresult\s:\s\[{"name":\s).*(?=})'
Get-ChildItem $pathToFiles -Recurse  | Where-Object { -not $_.PSIsContainer } |
ForEach-Object {
    $text = (Get-Content $_ -Raw)
    $value = [regex]::Match($text, $regex).Groups[1].Value
    $text -replace "searchresult",$value | Set-Content -path $_
}