首页 > 解决方案 > 带有“.”的 PowerShell 正则表达式 电源外壳

问题描述

我想用 PowerShell 替换循环中某些字符串的一部分

示例字符串

testvm029.vmxxx

我想替换 .vmxxx 中的所有内容。每个字符串都有另一个长度,但都以.vm...所以结果应该是:testvm029

我尝试了以下脚本:

Foreach($String in $Strings) {

$StringTest = $String -replace "(.vm)(.+)","$null"

}

当然,这首先会杀死我的字符串,vm而不是.vm... 结果: test

我怎样才能实现我的目标?

编辑:.vm 不是最后一个 '.' 我的字符串是这样的: test123.vmabc.string

以后想剪.vm

标签: regexstringpowershell

解决方案


你需要使用

$String -replace '\.vm.*'

查看正则表达式演示

该模式将找到第一.vm个子字符串(with \.vm),然后匹配字符串的其余部分(with .*)。匹配将被替换为空字符串(默认情况下使用它,但您可以显式编写它,$String -replace '\.vm.*', '')。


推荐阅读