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 に答える