在此字符串中:
"Data Source=srv1-a.be.com;Initial Catalog=db1;Provider=SQLNCLI11;Integrated Security=SSPI;"
无论数据源名称是什么,我都想用PowerShell脚本替换为localhost。
使用以下代码,在localhost之后字符串将被截断!
我得到了结果→Data Source=localhost
。
"Data Source=srv1-a.be.com;Initial Catalog=db1;Provider=SQLNCLI11;Integrated Security=SSPI;" -replace '(?<grp1>Data Source=)(.*)', '${grp1}localhost'
结果应为:
"Data Source=localhost;Initial Catalog=db1;Provider=SQLNCLI11;Integrated Security=SSPI;"
答案 0 :(得分:0)
我对您的-Replace
操作进行了一些修改:
"Data Source=srv1-a.be.com;Initial Catalog=db1;Provider=SQLNCLI11;Integrated Security=SSPI;" -replace '(?<=Data Source=)[^;]+','localhost'
我在(?<=)
后使用正向查找来查找Data Source=
字符串,并将位置设置在该位置(=
之后的字符)。 [^;]+
与当前位置以外的;
以外的一个或多个连续字符匹配。然后,我们只是将匹配的字符串替换为localhost
。结果,只有服务器名称被匹配和更新。