Powershell替换精确的字符串

时间:2013-08-06 09:50:01

标签: regex powershell replace

我想替换一个简单的字符串“WEEK”。 (带点)在文本文件中,字符串为“TEST”

$LOG= "C:\FILE.TXT"
$A= "TEST"
(Get-Content $LOG) | Foreach { $_ -Replace "WEEK.", $A } | Set-Content $LOG;

问题是我的文件包含以下内容:

WEEK_A WEEK.

当我运行我的脚本时,结果是:

TESTA TEST

我想要的结果是:

WEEK_A TEST

我试着用“周”。和“^ WEEK。$”但是没有用

你能帮助我使用正则表达式吗?感谢

======编辑==================

确定。我试试

$LOG= "C:\FILE.TXT"
$A= "TEST"
(Get-Content $LOG) | Foreach { $_ -Replace "WEEK\.", $A } | Set-Content $LOG;

似乎是它的作品

1 个答案:

答案 0 :(得分:4)

之所以发生这种情况,是因为你使用了模式WEEK.点是一个问题:在正则表达式世界中,点表示“任何字符”。这就是它取代WEEK_WEEK.的原因。

当您添加反斜杠时,则点被转义即。它失去了它的特殊意义。从而使其发挥作用。