我在目录中有几个php文件,我想用不同的文本替换所有文件中的几个单词。这是我的代码的一部分:
$replacements_table=
("hr_table", "tbl_table"),
('$users', "tbl_users")
foreach ($file in $phpFiles){
foreach($replacement in $replacements_table){
(Get-Content $file) | Foreach-Object{$_ -replace $replacement} | Set-Content $file
}
}
它可以替换“hr_table”,但对“$ users”完全不起作用。任何建议都会很好
答案 0 :(得分:4)
字符串实际上是一个正则表达式,因此需要使用'\'进行转义。见this thread
$replacements_table= ("hr_table", "tbl_table"), ('\$users', "tbl_users")
会奏效。
答案 1 :(得分:2)
美元符号是一个特殊的正则表达式字符,匹配字符串的结尾,您需要将其转义。在正则表达式中转义字符是通过要转义的字符前面的'\'来完成的。一个更安全的转义字符的方法(特别是当你不知道字符串是否包含特殊字符时)是使用Escape方法。
$replacements_table= (hr_table', 'tbl_table'), ([regex]::Escape('$users'), 'tbl_users')
答案 2 :(得分:1)
尝试使用反斜杠转义“$
”:'\$users'
$符号告诉正则表达式匹配字符串的末尾。反斜杠是正则表达式转义字符。
答案 3 :(得分:0)
尝试在变量名称周围使用双引号而不是单引号
修改强>
沿着这些方向尝试......
$x = $x.Replace($originalText, '$user')