1

SQL接続文字列のセクションに一致する正規表現を作成しました。最初の仕様では、初期カタログなどに特殊文字を含めないように強制されていました。だから私は持っていた

string strConn = "Data Source=VAIOE;Initial Catalog=SomeTextOnlyCatname;Integrated 
    Security=True;Persist Security Info=True;MultipleActiveResultSets=True;Connect Timeout=0;";
Regex databaseNameRegex =
    new Regex(@"(?i)\b(Initial\sCatalog|Database)\b\s?=\s?(\w+\s*)*;?");

ここで、記号や句読点などの名前を持つ可能性のあるセクションを照合する必要があります。たとえば、

string strConn = "Data Source=VAIOE;Initial Catalog=N3wC@t@l0gName*6Symbols;Integrated 
    Security=True;Persist Security Info=True;MultipleActiveResultSets=True;Connect Timeout=0;";

戻りたいところInitial Catalog=N3wC@t@l0gName*6Symbols

私が試してみました

Regex databaseNameRegex =
    new Regex(@"(?i)\b(Initial\sCatalog|Database)\b\s?=\s?(\w+\p{P}*\p{M}*\p{Z}*\s*)*;?");

ただし、接続文字列にセミコロンが含まれているため、これは失敗します。これに対処するための最良の正規表現は何ですか?

御時間ありがとうございます。

4

1 に答える 1

10

SqlConnection接続文字列を解析して正規表現を回避するために使用できますか? データベース名だけが必要な場合は、次のようにします。

var conn = new SqlConnection(strConn);
Console.WriteLine(conn.Database);

編集

これを行うためのより良い方法は、Allon Guralnek によって提供されました - ありがとう!

これに使用SqlConnectionStringBuilderします-必要な情報を抽出します。

var connBuilder = new SqlConnectionStringBuilder(strConn);
Console.WriteLine(connBuilder.InitialCatalog);
于 2012-04-24T14:21:29.843 に答える