Visual Studio Regex找到某些单词

时间:2014-05-01 19:29:44

标签: regex visual-studio-2012

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

你的尝试找不到任何东西。它会查找一个零长度字符串,该字符串在RAISERROR和COMMIT之前都是紧接着的。不存在这样的字符串。

相反,您应该搜索RAISERROR,稍后由COMMIT

跟踪
(?s)(\bRAISERROR\b.*\bCOMMIT\b|\bCOMMIT\b.*\bRAISERROR\b)

正则表达式的解释; (?s)是错误命名的“单行”模式的标志,它强制.匹配换行符。然后找到单词“RAISEERROR”,后跟任意数量的任意字符,后跟“COMMIT”。或者相同但相反的顺序。