Jos*_*den 5 .net c# regex replace
这让我非常困惑.为什么我在以下代码中获得重复的替换字符串:
static void Main(string[] args)
{
String input = "test";
String pattern = ".*";
String replacement = "replace";
Console.WriteLine(Regex.Replace(input, pattern, replacement));
Console.Read();
}
Run Code Online (Sandbox Code Playgroud)
这输出到控制台:
replacereplace
Run Code Online (Sandbox Code Playgroud)
我知道正则表达式会得到奇怪的匹配结束符,但应该没有.我也明白这个模式可以什么都不匹配,但很明显输入并不算什么.这发生在.Net 3.5和4.0中,我对SingleLine和MultiLine也有同样的看法.
我知道有几种选择可以做我期待的事情,但我更想知道其他什么比赛.*认为它的发现.
您获得两个替换的原因是因为.*您获得了两个匹配项:"test"、 和""。
如果您进行更改.*,.+它将按照您期望的方式工作:
String pattern = ".+";
Run Code Online (Sandbox Code Playgroud)
另一种选择是添加字符串锚点的开头:
String pattern = "^.*"; // I know this looks like a smiley
Run Code Online (Sandbox Code Playgroud)