Powershell用通配符替换

时间:2018-08-15 15:58:27

标签: string powershell replace

我要替换域字符串

“ random.org”将所有内容带到句号后面

$newstring = $domain.replace #Not sure what else to add

我知道使用.Replace,但是不确定如何使用通配符功能以及它如何工作。

请给我一点帮助!

谢谢!

3 个答案:

答案 0 :(得分:0)

您可以使用PowerShell的-replace运算符,该运算符使用正则表达式:

$newstring = $domain -replace '^[^.]*'

如果您想知道缺少替换字符串,那么在PowerShell中这是可选的;上面的代码在功能上与

相同
$newstring = $domain -replace '^[^.]*', ''

答案 1 :(得分:0)

如果仅查找TLD(.com,.org,.gov等),则可以将-replace与捕获一起使用。

PS C:\src\t> "www.myhome.org"  -replace '^[^.]*'
.myhome.org
PS C:\src\t> "www.myhome.org"  -replace '^.*(\..*)', '$1'
.org

答案 2 :(得分:0)

与正则表达式一起使用的PowerShell的“ -replace”运算符经常与字符串上的“ .replace”方法混淆。有很多方法可以给猫咪剥皮,但是您的问题很难准确回答。

无论如何,您都不希望使用“方法”

string.replace()

代替其他建议,使用“运算符”

string -replace "regex_to_be_replaced_here", "replacement_here"

已经提供了两个示例。我会选择Joey's,他的正则表达式说“从字符串的开头开始,匹配除点(“。”)之外的所有内容,然后将其替换为空,从而有效擦除它们,使点后的部分消失:

$newstring = $domain -replace '^[^.]*', ''

您也许还可以使用.split方法或-split运算符

string.split("some_delim") or string -split "some_delim"

示例:

$domain = "random.org"    
$domain.split('.')[-1]
org

分割运算符,例如-replace运算符使用正则表达式,其中“。”具有特殊含义,因此您需要对其进行转义,告诉正则表达式您确实要匹配“。”。

 ($domain -split '\.')[-1]
 org

如果您已经从字符串的右边知道了多少个字符,您甚至可以使用substring()。以下方式给我$ domain的最后3个字符:

$domain.substring($domain.length - 3)
org