我正在尝试替换PowerShell中每个关键字的第一个字符,但无法找到正确的模式以获得所需的结果。不知何故,我能够设法获得替代,但其他价值正在影响哪些作为一个价值,即" Gii-test-api.ne"转换为" Gii $ test $ api $ ne"。
例如:
我的字符串是(将-
替换为$
):
$values = -CertThumb 1234567 -serverCertThumb 75659600 -MaintenancePeriod 60 -apiProtocol https -Port 8973 -Uri Gii-test-api.ne
预期产出:
$CertThumb 1234567 $serverCertThumb 75659600 $MaintenancePeriod 60 $apiProtocol https $Port 8973 $Uri Gii-test-api.ne
尝试过的命令:
$values.ToString() -replace ('^*\-','$')
答案 0 :(得分:1)
您可以使用以下正则表达式替换-
字符仅匹配,如果之前没有单词char:
$values -replace '\B-','$'
或者,如果您只想替换前面有空格或字符串开头的-
:
$values -replace '(?<!\S)-','$'
此处,\B
匹配word boundary以外的任何位置(即此处,-
仅匹配不带字母,数字或_
)和{ {1}}否定lookbehind匹配字符串中以字符串开头或以空格开头的位置。
请注意,替换可以是(?<!\S)
或'$'
(替换中的文字'$$'
将在此处作为$
字符进行解析,但如果您更换使用$
+数字,您必须使用另一个$
转义$
。
请参阅regex demo。