1

我正在尝试使用 Powershell 在行尾查找和替换一些文本。(ascii, txt, windows) 我需要使用给定的脚本来执行此操作,该脚本已用于字符串替换:

$inputText = [system.IO.File]::ReadAllText("Text.txt")

$regex = '\\DE$|\DE_02'

$regex > test.txt

$th = [system.IO.File]::ReadAllText("test.txt")

foreach($expression in $th) {

 if ($expression -eq 'EOF') { break }

 $parts = $expression.Split("|")

 if ($parts.Count -eq 2) {

     $inputText = $InputText -creplace $parts

     echo $inputText | out-file "Text_neu.txt" -enc ascii
 }
}

到目前为止,该 cmdlet 工作正常,但无法匹配行尾 ($) -.- 我也尝试了 `r`n 而不是 $ 但没有奏效...

当我这样尝试时:

$inputText = [system.IO.File]::ReadAllText("Text.txt")

$inputText.Replace("\DE\`r\`n","\DE_02\`r\`n") | Out-File Text_neu.txt

它已正确更换。

如何更改现有脚本以使其也可以工作?

4

1 回答 1

1

我不确定我是否正确理解了您的脚本,但我认为您的问题是,您正在替换整个文本而不是单行。

所以$不是一行的结尾(\r\n,它将默认匹配字符串的结尾!

您可以使用 inline 修饰符来修改此行为(?m)。这将改变 的行为$以匹配行尾。

尝试

$regex = '(?m)\\DE$|\DE_02'

作为你的正则表达式。

于 2012-09-10T09:13:34.290 回答