用powershell替换链接中的字符

时间:2016-06-07 12:53:39

标签: powershell powershell-v2.0 powershell-v3.0

我想替换

中的?

"EquipmentInfo["?"] = "<iframe src='http://bing.fr'></iframe>";"

由变量。

我试过了:

(get-content C:\word.txt) -replace '?', '$obj' | Set-Content C:\word.txt

2 个答案:

答案 0 :(得分:3)

我会使用积极的lookbehind来确保找到正确的问号。此外,您必须在替换时使用双引号,因为您要替换变量:

(get-content C:\word.txt -raw) -replace '(?<=EquipmentInfo\[")\?', "$obj" | Set-Content C:\word.txt

使用正则表达式:

(?<=EquipmentInfo\[")\?

Regular expression visualization

答案 1 :(得分:2)

回答解释原始问题 jisaak's helpful answer提供全面解决方案

-replace运算符将正则表达式作为RHS上的第一个操作数,其中?是具有特殊含义的所谓元字符。

因此,要使用文字 ?,您必须使用\ 转义

(get-content C:\word.txt) -replace '\?', $obj   

注意:请勿在{{1​​}}周围使用'...',除非您需要 literal 字符串$obj;通常,要引用字符串中的变量,必须使用$obj,但这不是必需的。

一个带文字的简单示例:

"..."