PowerShell中如何使用-replace仅匹配第一个点号?
只替换PowerShell字符串数组中每个元素的第一个“.”
有两种简单的方法可以实现需求:
方法1:用正则捕获组(-replace运算符)
通过正则捕获组锁定第一个“.”的位置,精准替换,代码如下:
$Var = "Dog.Jumping.png", "Horse.Jumping.gif", "Cat.Jumping.jpg", "Lion.Jumping.tiff", "Shark.Jumping.svg", "Cow.Jumping.psd" $Var -replace '^([^.]*)\.', '$1 - '
正则逻辑说明:
^:从字符串开头开始匹配([^.]*):捕获第一个“.”之前的所有非“.”字符(存为捕获组1)\.:精准匹配第一个“.”(转义是因为“.”在正则中是通配符)- 替换为
$1 -:保留捕获到的内容,把第一个“.”替换成-
运行后每个元素会变成:
- Dog - Jumping.png
- Horse - Jumping.gif
- Cat - Jumping.jpg
- Lion - Jumping.tiff
- Shark - Jumping.svg
- Cow - Jumping.psd
方法2:用字符串的Replace方法(更直观)
PowerShell的字符串对象自带Replace方法,支持指定替换次数,直接指定只替换1次即可:
$Var = "Dog.Jumping.png", "Horse.Jumping.gif", "Cat.Jumping.jpg", "Lion.Jumping.tiff", "Shark.Jumping.svg", "Cow.Jumping.psd" $Var | ForEach-Object { $_.Replace('.', ' - ', 1) }
这个方法不需要写正则,对新手更友好,效果和方法1完全一致。
内容的提问来源于stack exchange,提问作者gaberiel__
相关产品推荐
相关产品推荐

