尝试使用Powershell正则表达式替换字符串

时间:2017-08-24 06:40:29

标签: regex powershell

我的文字文件如下

( HOST = <something numeric> )

想要替换HOST值。所以尝试使用下面的regx,但没有去

(Get-Content C:\Go\test.txt).replace("\HOST\s*=\s*.+\s*\", " HOST = 8888 ") | Set-Content C:\Go\test.txt

任何帮助?

1 个答案:

答案 0 :(得分:0)

您需要确保使用以下正则表达式替换正则表达式:

PS> $s = "( HOST = 111111 )"
PS> $s -replace "HOST\s*=\s*\d+\s*", " HOST = 8888 "
(  HOST = 8888 )

此处HOST\s*=\s*\d+\s*匹配:

  • HOST - 文字HOST字符串
  • \s*=\s* - 包含0 +空格的=
  • \d+ - 一位或多位
  • \s* - 0+空格。

如果* .ora文件是没有BOM的UTF8编码,则需要使用

$MyPath = 'C:\Go\test.txt'
$MyFile = Get-Content $MyPath
$MyFile = $MyFile -replace "HOST\s*=\s*\d+\s*", " HOST = 8888 "
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($MyPath, $MyFile, $Utf8NoBomEncoding)