.net 使用正则表达式删除重复字符

.net 使用正则表达式删除重复字符,.net,regex,.net,Regex,我需要使用正则表达式匹配*字符的第二次和后续出现。我实际上是在使用Replace方法来删除它们,下面是一些前后的示例: test* -> test* (no change) *test* -> *test test** *e -> test* e 可以用正则表达式来实现这一点吗? 谢谢如果.NET可以处理任意数量的后视,请尝试用空字符串替换以下模式: (?<=\*.*)\* 还制作了: test* *test test* e 非最优,但另一种方法

我需要使用正则表达式匹配*字符的第二次和后续出现。我实际上是在使用Replace方法来删除它们,下面是一些前后的示例:

test*     ->  test* (no change)
*test*    ->  *test
test** *e ->  test* e
可以用正则表达式来实现这一点吗?
谢谢

如果.NET可以处理任意数量的后视,请尝试用空字符串替换以下模式:

(?<=\*.*)\*
还制作了:

test*
*test
test* e

非最优,但另一种方法。
记录第一个事件的索引,替换所有事件,然后在重新记录的索引处重新插入第一个事件。

第一个事件在.NET 4中工作。我没有在以前的版本中测试过它;第一个确实有用。@Johannes,干杯。PowerShell是否使用相同的正则表达式引擎?(PowerShell是用.NET编写的吗?)是的,PowerShell是用.NET编写的;而且,由于您还可以访问完整的.NET framework,因此它为快速测试某些东西(如正则表达式和其他东西)提供了一个非常好的平台。啊,好吧,使用正则表达式时所有的后顾之忧都将远不如理想!)那是什么.NET语言?我是不是遗漏了什么?在我看来像Perl。
$str =~ s/\*/MYSPECIAL/;  #only replace the first *
$str =~ s/\*//g;          #replace all *
$str =~ s/MYSPECIAL/\*/;  #put * back
using System;
using System.Text.RegularExpressions;

public class Test
{
    public static void Main()
    {
        Regex r = new Regex(@"(?<=\*.*)\*");
        Console.WriteLine("{0}", r.Replace("test*", ""));    
        Console.WriteLine("{0}", r.Replace("*test*", ""));    
        Console.WriteLine("{0}", r.Replace("test** *e", ""));                          
    }
}
test*
*test
test* e
$str =~ s/\*/MYSPECIAL/;  #only replace the first *
$str =~ s/\*//g;          #replace all *
$str =~ s/MYSPECIAL/\*/;  #put * back