用换行符替换单词

Replace Words with a linebreak

这是我的文本文件 (temp.txt):

(test1 AND id=42343) AND NOT (test2 AND id=12234) AND NOT (test3 AND id=12342) AND NOT (test4 AND id=13342)

我必须替换所有的“)AND NOT(”以便格式化后的文件看起来像这样:

test1 AND id=42343
test2 AND id=12234
test3 AND id=12342
test4 AND id=13342

我试过了Script/Command:

(Get-Content C:\temp.txt) |ForEach-Object{$_ -replace "[) AND NOT (]","`n`r"}|Set-Content C:\temp.txt

但现在文本文件看起来很糟糕:

es
1




i
=42343











es
2




i
=12234











es
3




i
=12342











es
4




i
=13342




那么我的命令有什么问题?

尝试:

$a = "(test1 AND id=42343) AND NOT (test2 AND id=12234) AND NOT (test3 AND id=12342) AND NOT (test4 AND id=13342)"
$a.Replace(") AND NOT (", "`r`n").TrimStart("(").TrimEnd(")") | Out-File E:.txt

这里你真的不需要正则表达式,甚至不需要循环