这是关于正则表达式的最后一个问题,希望在我的余生中。我想在符合上述要求的更大文本块中返回任何字符串。
以@
开头,以,
;
,=
或换行符\n
结束。
我试了以下但没有运气:
return @"(^@).*?(?=\s|;|\=|\r|\n)";
我的目的是尝试从看起来像这样的字符串中提取变量@tmp。 (TSQL语句),以便它可以在richtext框中突出显示。
declare @tmp varchar(25);
set @tmp='test';
select * from mytable where mycolumn = @tmp;
我正在扩展现有编辑器的功能,但它缺少突出显示变量的能力。 (只有关键词,评论,文字等)。
答案 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]