如何在powershell中写一个-replace,其中一个数字跟在序列之后

时间:2015-06-30 07:39:59

标签: regex powershell

例如,让我们说我想取字符串Hello World并使用-replace输出" World1"。这是我对表达式的尝试:

"Hello World" -replace '.*(World)','$11'

但这里的问题是它看到11美元作为第11个序列,而不是1美元,然后是1.我已经尝试搜索转义字符来指定我想要1跟随$ 1,但是没找到任何东西。

我试图解决的现实世界问题是获取一堆电子邮件地址并在最后创建带有数字的别名。例如

jsmith@example.com

变为

jsmith1@example.com
jsmith2@example.com

2 个答案:

答案 0 :(得分:5)

尝试"Hello World" -replace '.*(World)','${1}1'

似乎在这里工作

        var s1 = "Hello World";
        var r = ".*(World)";
        var p = "${1}1";
        var outstr = Regex.Replace(s1, r, p);
        Console.WriteLine(outstr);

输出World1

答案 1 :(得分:1)

试试这个:

$Email = "jsmith@example.com"
$Domain = ($Email -split "@")[-1]
for ($i=1;$i -le 5;$i++)
{
(($Email -split "@")[0] + $i),$Domain -join "@"
}

## Result 
jsmith1@example.com
jsmith2@example.com
jsmith3@example.com
jsmith4@example.com
jsmith5@example.com

如果你不需要它,你可以避免使用for循环,只需替换本节中的$ i:

$Email -split "@")[0] + $i