我在一个配置文件中得到了类似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发布于 2019-03-06 13:46:52
.NET regex不支持POSIX字符类。[[:blank:]]应替换为\s。
请参阅完整的regex替换片段:
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演示。
替换模式中的$1代表第1组中捕获的值。请注意转义-- `$1 --这在这里是必要的,因为双引用的文字可能包含外推变量。
https://stackoverflow.com/questions/55024113
复制相似问题