我必须在整个SQL存储过程中搜索某些字符串。过程中的每一行都已输入到数组中的数组位置。我需要做的是搜索数组中的每个条目以查找某个子字符串,在这种情况下,我想搜索“EXEC SP_MYSP_”。 (这是所有存储过程如何作为前缀的示例。)如果字符串包含“EXEC SP_MYSP_”,那么我想增加一个计数器(这很容易),但我还想将存储过程名称添加到列表中。有没有办法读取剩余的存储过程名称,并在我点击空格分隔符后停止读取?如果有人能提供一些非常感谢的建议!
代码相当简单,但我会添加它,以防它帮助任何人看到我上面要解释的内容。
if (stringValue.Contains("EXEC SP_MYSP_"))
{
count++;
//Get the entire stored procedure name.
}
答案 0 :(得分:0)
// using System.Text.RegularExpressions;
private Regex pattern = new Regex(@"EXEC SP_MYSP_([^\s]+)", RegexOptions.IgnoreCase);
private bool TryMatchName(string input, out string name)
{
var match = pattern.Match(input);
if (match.Success)
{
name = match.Groups[1].Value;
return true;
}
else
{
name = null;
return false;
}
}
然后按如下方式调用此方法:
const string input = "EXEC SP_MYSP_FOO 1, 2, 3;";
string name;
bool nameFound = TryMatchName(input, out name);
正则表达式EXEC SP_MYSP_([^\s]+)
具有以下含义:
EXEC SP_MYSP_
,+
)字符,这些字符不是([^…]
)任何空白字符(\s
),(…)
),以便可以使用match.Groups
提取。