正则表达式替换:$&和Value(在lambda表达式中)之间有什么区别?

Ant*_*ony 9 c# regex

假设我想使用正则表达式在字符串中的每个单词之前添加"test".

string MyText="hello world"
string Pattern = "\w+";
Run Code Online (Sandbox Code Playgroud)

我能做到这一点:

Regex.Replace(MyText, Pattern, "test$&")
Run Code Online (Sandbox Code Playgroud)

或这个:

Regex.Replace(MyText, Pattern, m=>"test"+m.Value)
Run Code Online (Sandbox Code Playgroud)

我会得到相同的结果,那么lambda表达式中$&和Value之间的区别是什么?如果结果没有差异,是否存在性能问题?

小智 1

Lambda 是匿名方法,其工作方式与常规方法相同。您的示例中声明的相当于: string Convert(RegexMatch match) { return "test" + match.Value; }。与使用第一个示例中使用的正则表达式相比,使用此语法可以让您获得更丰富的可能性。