正则表达式查找以@开头并以空格,=,结尾的任何字符串;或换行符

时间:2013-03-13 19:28:51

标签: c# regex

这是关于正则表达式的最后一个问题,希望在我的余生中。我想在符合上述要求的更大文本块中返回任何字符串。

@开头,以;=或换行符\n结束。

我试了以下但没有运气:

return @"(^@).*?(?=\s|;|\=|\r|\n)";

我的目的是尝试从看起来像这样的字符串中提取变量@tmp。 (TSQL语句),以便它可以在richtext框中突出显示。

declare @tmp varchar(25);
set @tmp='test';
select * from mytable where mycolumn = @tmp;

我正在扩展现有编辑器的功能,但它缺少突出显示变量的能力。 (只有关键词,评论,文字等)。

4 个答案:

答案 0 :(得分:2)

遵循SQL Server变量的规则,这个正则表达式应该比上面的更好:

@[\w\d_@$]+

因为任何个字符可以终止变量名称,而不仅仅是您列出的变量名称。因此,根据http://msdn.microsoft.com/en-us/library/aa223962(v=sql.80).aspx

,此表达式将查找有效的任何内容 编辑:对不起,忘了那里的“\ d”。毕竟数字也是有效的。

答案 1 :(得分:1)

这应该是技巧@[^\s=;\n]+(?=[\s=;\n])

以下是匹配测试字符串的模式示例:http://regexr.com?3445h

答案 2 :(得分:1)

你想要的正则表达式是:

new Regex(@"@.*?[ ;=\n]");

答案 3 :(得分:1)

尝试这样的事情:

(@.+?)[ |=|;|\n]