Если .NET может справиться с произвольным количеством случаев, попробуйте заменить следующий шаблон пустой строкой:
(?<=\*.*)\*
.
PS Home:\> 'test*','*test*','test** *e' -replace '(?<=\*.*)\*',''
test*
*test
test* e
Другим способом был бы такой шаблон:
(?<=\*.{0,100})\*
, где число 100
может быть заменено размером целевой строки.
И тестирование следующего с Mono 2.0:
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