C# 在SP中上一个更改日志详细信息的末尾追加字符串

C# 在SP中上一个更改日志详细信息的末尾追加字符串,c#,sql,regex,C#,Sql,Regex,我正在尝试使用C#和regex添加更改日志详细信息。在下面给出的代码中,我们需要在最新的变更日志详细信息之后添加变更日志详细信息。我曾尝试使用regex,但只能匹配更改日志的标题。下面是存储过程中的一个示例脚本,我们尝试对SP、触发器和函数使用相同的代码。请让我知道在对其他对象类型使用regex时是否有任何限制 用于匹配changelog头的正则表达式:((?i)日期\s*(?i)作者\s*(?i)说明\s*) 输入: /*************************************

我正在尝试使用C#和regex添加更改日志详细信息。在下面给出的代码中,我们需要在最新的变更日志详细信息之后添加变更日志详细信息。我曾尝试使用regex,但只能匹配更改日志的标题。下面是存储过程中的一个示例脚本,我们尝试对SP、触发器和函数使用相同的代码。请让我知道在对其他对象类型使用regex时是否有任何限制

用于匹配changelog头的正则表达式:((?i)日期\s*(?i)作者\s*(?i)说明\s*)

输入:

/***********************************************************************************************      
PROCEDURE:  DEL_ABCD_Table1     
      
PARAMETERS: Sample int
      
APPLICATION:    ABCD

PURPOSE:    Deletes all records from the Table1

NOTES:  

MODIFIED 
DATE        AUTHOR      DESCRIPTION
----------  --------------  -------------------------------------------------------------
08/08/2012  Jim         Initial Version
09/25/2014  Pam         Adding Canvas
09/11/2018  Dwight      Adding rootbeer 
12/24/2019  Angela      Adding Catnip
**********************************************************************************************/      
预期产出:

/***********************************************************************************************      
PROCEDURE:  DEL_ABCD_Table1     
      
PARAMETERS: Sample int
      
APPLICATION:    ABCD

PURPOSE:    Deletes all records from the Table1

NOTES:  

MODIFIED 
DATE        AUTHOR      DESCRIPTION
----------  --------------  -------------------------------------------------------------
08/08/2012  Jim         Initial Version
09/25/2014  Pam         Adding Canvas
09/11/2018  Dwight      Adding rootbeer 
12/24/2019  Angela      Adding Catnip
11/01/2019  SK          Adding Thats what she said
**********************************************************************************************/      

要匹配到上次更改日志之后:

(?i)DATE\s+AUTHOR\s+DESCRIPTION\r?\n--[\s-]+\r?\n(?:(?!\*\*).*\r?\n)*(?=\*\*)
解释

  • (?i)
    使用不区分大小写的匹配
  • DATE\s+AUTHOR\s+DESCRIPTION\r?\n
    匹配更改日志标题
  • --[\s-]+\r?\n
    匹配,例如至少匹配
    --
    ,后跟1+次
    -
    或空格字符
  • (?:
    非捕获组
    • (?!\*\*)。\r?\n
      如果不是以
      **
  • )*
    关闭组并重复0多次以匹配所有行
  • (?=\*\*)
    例如至少为最后一行断言
    **
如果值仅由选项卡分隔,则可以使用
\t+
而不是
\s+

替换为完全匹配,后跟替换字符串和换行符


是否需要将正则表达式附加到文件中?我不知道你在问什么。您可以读取文件,然后在最后一行之前插入一行并重写它。请在问题中包括您尝试的正则表达式,而不仅仅是作为源标题中的external link.change log。讨厌!这就是源代码控制的目的。20年前可能很普遍,但现在它是一种反模式。你可以寻找以“******”开头的第一行,因为这个问题没有什么不清楚的地方。这正是我要寻找的,我所做的唯一的补充是,我把大括号放在组中以便于替换。非常感谢。