我正在尝试使用Visual Studio的正则表达式查找文件。基本上,我有一个数据库项目,其中包含一些.sql文件,然后包含CREATE PROCEDURE块。
我希望使用一种正则表达式来查找包含" RAISERROR"的.sql文件。和" COMMIT"其中的陈述。不幸的是,(?= \ bRAISERROR \ b)(?= \ bCOMMIT \ b)似乎没有找到任何内容,任何其他变体似乎只检索任何一个或作为结果。我在正则表达式方面不强,我无法找到可能对此有帮助的模式。
这是一个与我正在测试
的示例程序相匹配的示例程序CREATE PROCEDURE [procedurename]
<irrelevant parameters>
AS
<TSQL code>
BEGIN TRANSACTION
<TSQL CODE>
RAISERROR('message', 16, 1)
<TSQL code>
RAISERROR('another message', 16, 2)
<TSQL code>
COMMIT
RETURN 0
答案 0 :(得分:1)
你的尝试找不到任何东西。它会查找一个零长度字符串,该字符串在RAISERROR和COMMIT之前都是紧接着的。不存在这样的字符串。
相反,您应该搜索RAISERROR,稍后由COMMIT
跟踪(?s)(\bRAISERROR\b.*\bCOMMIT\b|\bCOMMIT\b.*\bRAISERROR\b)
正则表达式的解释;
(?s)
是错误命名的“单行”模式的标志,它强制.
匹配换行符。然后找到单词“RAISEERROR”,后跟任意数量的任意字符,后跟“COMMIT”。或者相同但相反的顺序。