我在一个配置文件中遵循了8-9次这样的要求。
ProxyPass http://servername.de.domain:randomport/randomword
我构建了以下正则表达式:
(?:ProxyPass)[[:blank:]](?=http)(.*)(?=:)
我要编辑的部分是服务器名和域...我得到了与我的正则表达式匹配的内容,但是我无法使powershell命令正常工作。我坚决:
(Get-Content $file) -replace $regexProxyPass1, " ProxyPass http://$serverName.$domain" | Set-Content $file
答案 0 :(得分:0)
.NET正则表达式不支持POSIX字符类。 [[:blank:]]
应替换为\s
。
查看完整的正则表达式替换代码段:
PS> $domain = 'mydomain'
PS> $serverName = 'myservername'
PS> $s = 'ProxyPass http://servername.de.domain:randomport/randomword'
PS> $s -replace '(ProxyPass\s+http://)[^:]+', "`$1$serverName.$domain"
ProxyPass http://myservername.mydomain:randomport/randomword
详细信息
(ProxyPass\s+http://)
-第1组:ProxyPass
,1个以上的空格,http://
[^:]+
-除:
之外的1个或多个字符请参见.NET regex demo。
替换模式中的$1
代表捕获到组1中的值。请注意转义符`$1
-这是必需的,因为双引号文字可能包含外推变量。