C# 用.net正则表达式替换多行

C# 用.net正则表达式替换多行,c#,.net,regex,C#,.net,Regex,我对我的第一篇文章和正则表达式不熟悉。 目前,我正在开发一个简单的脏应用程序,用注入的字段替换基类属性。因为我需要编辑大约400个文件 它应该发现: ClassName(WiredObjectRegistry registry) : base(registry) { 并替换为: ClassName(IDependency paramName, ISecondDependency secondParam, ... ) { _fieldName = paramName; ... 所以我需

我对我的第一篇文章和正则表达式不熟悉。 目前,我正在开发一个简单的脏应用程序,用注入的字段替换基类属性。因为我需要编辑大约400个文件

它应该发现:

ClassName(WiredObjectRegistry registry) : base(registry)
{
并替换为:

ClassName(IDependency paramName, ISecondDependency secondParam, ... )
{
  _fieldName = paramName;
  ...
所以我需要用三条或更多的新线替换两条旧线

基本上我在想:

找到这个->

className+ctorParams+零或更多 空格+换行符+零或更多 空白+{

替换为->

className+newCtorParams+newline+ { 我的实地作业

我在.net上试过这个正则表达式

className + ctorParam + @"\w*" + "\r|\n" + @"\w*" + @"\{"
它不能正确地替换{和空格

替换的文件内容如下所示:

      public CacheManager(ICallManager callManager, ITetraEventManager tetraEventManager, IConferenceManager conferenceManager, IAudioManager audioManager)
{
        _callManager = callManager;
_tetraEventManager = tetraEventManager;
_conferenceManager = conferenceManager;
_audioManager = audioManager;
      {
你能帮我做这个吗-|

大卫

如果你在翻译

className + ctorParams + zero or more whitespaces + newline + zero or more whitespaces + {
将正则表达式转换为

className + ctorParam + @"\w*" + "\r|\n" + @"\w*" + @"\{"
那你就犯了几个错误

首先,空白的字符类是\s。\w表示字母数字字符

其次,\r | \n将导致交替运算符|将整个正则表达式分成两个可选部分=匹配|之前的正则表达式或|之后的正则表达式。在您的情况下,您根本不需要此位,因为\s将已经匹配空格、制表符和换行符。如果您确实希望正则表达式匹配Unix、Mac或DOS换行符,请使用\r?\n


但是,正如评论所示,除非您告诉我们您真正想要做什么,否则我们无法进一步帮助您。

当您键入问题时,屏幕上会显示一些信息,告诉您如何格式化问题,包括如何插入代码块。替换前的原始文件是什么样子的?我们需要查看实际的原始文件xt相关部分,即更换后的外观。向我们显示不正确的结果以及如何获得这些结果对我们没有帮助。