搜索&替换文本文件 - 使用RegEx变量模式

时间:2016-03-05 01:10:21

标签: regex powershell replace

我正在尝试替换每个文件中的字符串,让我们调用字符串XXX 我想用在Start和END

之间找到的正则表达式模式变量文本替换它

目前它只是替换了这个词,然后就是不替换。

$Pat1 = [regex]  '(START)*(END)'      # Find Variable between these 2 first

Get-ChildItem * -Recurse | Where-Object {
    $_.Attributes -ne "Directory"
} | ForEach-Object {
    (Get-Content $_) -replace "XXX","$Pat1" | Set-Content -path $_
}

下面的示例文字

Lorem ipsum dolor坐下来,精神上的精神。 Quisque porttitor augue quis urna suscipit lobortis。 Cras eu magna sem。 Quisque dictum feugiat convallis。

START 文件名1 END Lorem ipsum dolor坐下来,精致的adipistur elit。 Quisque porttitor augue quis urna suscipit lobortis。 Cras eu magna sem。 Quisque dictum feugiat convallis。

XXX Vestibulum risus quam,volutpat iaculis ipsum in,vehicula dictum urna。 Suspendisse dui tortor,faucibus et tellus vitae,malesuada consequat velit。

=================================

1 个答案:

答案 0 :(得分:0)

这个问题很不清楚,但我猜你想用文件中END$Pat1 = [regex] 'START(.*?)END' #Find Variable between these 2 first Get-ChildItem * -Recurse | Where-Object { -not $_.PSIsContainer } | ForEach-Object { $text = (Get-Content $_ -Raw) $value = [regex]::Match($text, $Pat1).Groups[1].Value $text -replace "XXX",$value | Set-Content -path $_ } 之间的值替换-replace而不是正则表达式本身。如果是这样,试试这个:

'text' -replace 'regex-pattern', 'stringvalue'

请注意,$0的作用类似$1正确的值不接受正则表达式,但只接受字符串(可能包含if(intent.getAction()==TEST_INTENT)if(intent.getAction().equals(TEST_INTENT))等。添加完整匹配,捕获组1等。)