2013-03-13 295 views
0

這是關於正則表達式的最後一個問題,希望對我的餘生有用。我想返回符合上述要求的大塊文本中的任何字符串。正則表達式查找任何以@開頭並以空格,=,;結尾的字符串。或換行

開頭爲@,並用;=結束,或換行符\n

我試過,沒有運氣以下:

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

我的目的是試圖從看起來像這樣的字符串中提取的變量@tmp。 (TSQL語句),以便它可以在富文本框中突出顯示。

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

我在擴大現有編輯器的功能,但缺少突出顯示變量的功能。 (只有關鍵字,評論,文字等)。

回答

2

繼ru SQL服務器變量的LES,這個正則表達式應該工作比上面的更好:

@[\w\[email protected]$]+ 

因爲有任何數字字符的,可以終止一個變量名,不只是你列出的。所以這個表達式會尋找任何有效的東西,而不是根據http://msdn.microsoft.com/en-us/library/aa223962(v=sql.80).aspx

編輯:對不起,忘了那裏的「\ d」。畢竟數字也是有效的。

+0

額外一英里......不錯! – RThomas 2013-03-13 20:02:28

+0

更新:我複製了表達式的錯誤版本。它缺少「\ d」類:數字在變量中也是有效的。即「@ 0」是完全有效的名稱。 – 2013-03-13 23:21:06

1

你想要的正則表達式是:

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

嘗試是這樣的:

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