用.net Regex替换多行

时间:2010-03-07 12:07:09

标签: c# .net regex

我是stackoverflow(我的第一篇文章)和正则表达式的新手。 目前我正在研究一个简单的脏应用程序,用ctor注入字段替换基类属性。 (我需要编辑大约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;
      {
你可以帮助我: - |

大卫

1 个答案:

答案 0 :(得分:0)

如果你正在翻译

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?

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