gpt4 book ai didi

c# - 使用正则表达式删除文本 block ,仅匹配第一次出现

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:02 24 4
gpt4 key购买 nike

我需要使用正则表达式从生成的脚本中删除存储过程。例如,我需要删除 usp_Remove:

...
GO
/****** Object: StoredProcedure [dbo].[usp_Remove] ******/
...
GO
/****** Object: StoredProcedure [dbo].[usp_Keep] ******/
...
GO

我尝试了以下正则表达式:

\/*\*\*\*\*\*\* Object:  StoredProcedure \[dbo\]\.\[usp_Remove\][\s\S]*GO

正确选择文本的开头。但它匹配所有内容,直到最后一个“GO”,我需要它匹配直到第一次出现“GO”,以便只删除该存储过程。任何帮助将不胜感激!

最佳答案

我会使用惰性匹配以免过度匹配,并使用正向预测来仅捕获存储过程:

(?si)/\*{6}\s+Object:\s+StoredProcedure\s+\[dbo\]\.\[usp_Remove\]\s+\*{6}\/.*?(?=GO)

示例代码:

var txt = "YOUR_TXT";
var rx = new Regex(@"/\*{6}\s+Object:\s+StoredProcedure\s+\[dbo\]\.\[usp_Remove\]\s+\*{6}\/.*?(?=GO)", RegexOptions.Singleline | RegexOptions.Ignorecase);
var result = rx.Replace(txt, string.Empty);

espresso :

enter image description here

关于c# - 使用正则表达式删除文本 block ,仅匹配第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29858363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com