【C#、Regex】像 #if DEBUG and #endif 删除指定内容

最近想发布 SQL Script 档案到正式环境时,自动将 Dev 测试脚本部分移除
尝试卡住发问在S.O得到 Nick 解答 c# - How like '#if DEBUG' and '#endif' remove content between two marks - Stack Overflow

举例:
有一个 A.sql 内容:

select 
    id
    ,name
    /**if DEBUG**/
    ,test1
    ,test2
    /**endif**/
from table
where sDate >= '2021-01-01'
    /**if DEBUG**/
    and test1 = '123456'
    and test2 = '123456'
    /**endif**/  

想变成

select 
    id
    ,name

from table
where sDate >= '2021-01-01'

可以这样做

void Main()
{
	var input = @"
select 
    id
    ,name
    /**if DEBUG**/
    ,test1
    ,test2
    /**endif**/
from table
where sDate >= '2021-01-01'
    /**if DEBUG**/
    and test1 = '123456'
	and test2 = '123456'
    /**endif**/            
            ";
	var output = Regex.Replace(input, @"/\*\*if\sDEBUG\*\*/.*?/\*\*endif\*\*/", "", RegexOptions.Singleline);
	Console.WriteLine(output);
}

注意:特别使用 RegexOptions.Singleline 因为它将整个输入字符串视为一行,忽略了换行符。

觉得有帮助可以帮 Nick 点个 Upvote ^__^


<<:  JS30 Day 27 - Click and Drag学习笔记

>>:  商业秘密(Trade Secret) & 版权(Copyright) & 专利(Patent) & 商标(Trademark)

【Day 10】- 藏起来的 Process 真的看不见摸不着?(讲解找出断链後的 Process 方法)

Agenda 资安宣言 测试环境与工具 学习目标 前情提要 技术原理与程序码 References ...

什麽是软件工程 (Software Engineering)?我们还需要它吗?

软件工程的范围极其广泛。软件工程的某些方面可以归类为数学或计算机科学;其他方面属於经济、管理或心理学...

Day26:优化修正

前面在写传送资料这一块时,有些环节没有思考妥当,导致问题丛生,所以这边先进行部分重新调整。 登入和发...

安装MinIO并从notebook储存model到MinIO

前面我们使用pvc放置训练好的model档好让seldon可以读取, 但放置模型档到pvc之中的过程...

AutoCAD ActiveX #5-2 Selection Filters (-4)

filtertype -4 Grouping code filterdata remarks &q...