PowerShell中的正则表达式

时间:2012-08-13 13:26:03

标签: regex powershell

我需要从两个值之间出现的文本文件中检索字符串。例如,我需要在< postcode >W12 FGS < /postcode >之间检索字符串,然后在该字符串中放置一个空格,因此它看起来像< postcode >W12 FGS < /postcode >。此文件可包含超过100个邮政编码。我该怎么办?

1 个答案:

答案 0 :(得分:0)

在处理正则表达式时,你需要非常精确,无论如何,根据你的要求,我需要:

$pattern = [regex]::escape('< postcode >W12FGS < /postcode >')
$replaceWith = '< postcode >W12 FGS < /postcode >'

(Get-Content .\postcode.txt) | 
Foreach-Object {$_ -replace $pattern,$replaceWith } |
Set-Content .\postcode.txt

根据评论更新,更改文件夹中多个xml的邮政编码。

Get-ChildItem c:\postcodes -Filter *.xml | Foreach-Object{
    [xml]$xml = Get-Content $_.FullName
    $xml.SelectNodes('//c_postcode') | Foreach-Object{ $_.'#text' = $_.'#text'.Insert(3,' ') }
    $xml.Save($_.FullName) 
}