C# 将SQL连接字符串的部分与正则表达式匹配

C# 将SQL连接字符串的部分与正则表达式匹配,c#,regex,C#,Regex,我已经编写了一个正则表达式来匹配SQL连接字符串的部分。在第一个规范中,初始目录等被强制不包含特殊字符。所以我有 string strConn = "Data Source=VAIOE;Initial Catalog=SomeTextOnlyCatname;Integrated Security=True;Persist Security Info=True;MultipleActiveResultSets=True;Connect Timeout=0;"; Regex databas

我已经编写了一个正则表达式来匹配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;";
我想返回
初始目录的地方=N3wC@t@l0gName*6符号

我试过了

Regex databaseNameRegex =
    new Regex(@"(?i)\b(Initial\sCatalog|Database)\b\s?=\s?(\w+\p{P}*\p{M}*\p{Z}*\s*)*;?");
但由于连接字符串中存在分号,因此该操作失败。处理这个问题最好的正则表达式是什么

谢谢您的时间。

您能用它来解析连接字符串并避免正则表达式吗?如果您只需要数据库名称,则应使用以下方法:

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

Allon Guralnek提供了一个更好的方法,谢谢

用于此-它将提取您需要的任何信息

var connBuilder = new SqlConnectionStringBuilder(strConn);
Console.WriteLine(connBuilder.InitialCatalog);
您可以使用来解析连接字符串并避免使用正则表达式吗?如果您只需要数据库名称,则应使用以下方法:

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

Allon Guralnek提供了一个更好的方法,谢谢

用于此-它将提取您需要的任何信息

var connBuilder = new SqlConnectionStringBuilder(strConn);
Console.WriteLine(connBuilder.InitialCatalog);

实际上,我将使用
SqlConnectionStringBuilder
类,它将提供对连接字符串中所有键值对的访问。它还允许您从键值对构造连接字符串。因此,要获得初始目录,可以使用
新的SqlConnectionStringBuilder(myConnectionString).InitialCatalog
。这是一个好主意。我想我会使用
SqlConnectionStringBuilderClass
!实际上,我将使用
SqlConnectionStringBuilder
类,它将提供对连接字符串中所有键值对的访问。它还允许您从键值对构造连接字符串。因此,要获得初始目录,可以使用
新的SqlConnectionStringBuilder(myConnectionString).InitialCatalog
。这是一个好主意。我想我会使用
SqlConnectionStringBuilderClass