0

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

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

我尝试了以下没有运气:

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

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

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

我正在扩展现有编辑器的功能,但它缺少突出显示变量的功能。(仅关键字、注释、文字等)。

4

4 回答 4

2

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

@[\w\d_@$]+

因为有任意数量的字符可以终止变量名,而不仅仅是您列出的那些。因此,根据http://msdn.microsoft.com/en-us/library/aa223962(v=sql.80).aspx,这个表达式将寻找任何有效的东西

编辑:对不起,忘记了那里的“\ d”。毕竟数字也是有效的。

于 2013-03-13T19:52:12.087 回答
1

尝试这样的事情:

(@.+?)[ |=|;|\n]
于 2013-03-13T19:45:08.887 回答
1

这应该可以解决问题@[^\s=;\n]+(?=[\s=;\n])

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

于 2013-03-13T19:30:35.777 回答
1

你想要的正则表达式是:

new Regex(@"@.*?[ ;=\n]");
于 2013-03-13T19:31:30.637 回答