2009-10-27 53 views
0

Reg表达式在C#

我给了上面的字符串,我想从这个字符串得到serveripaddress,DB1,uid和****这些值。

+0

至少告诉我们你已经得到了什么。这个问题,否则看起来像“嘿,所以,我解决我的任务” – Joey 2009-10-27 09:34:06

回答

1

没有必要解析连接字符串时,BCL能为你做到这一点:

var builder = new OleDbConnectionStringBuilder(connectionString); 
var provider = builder.Provider; 
var dataSource = builder.DataSource; 
var initialCatalog = builder["Initial Catalog"]; 
var userID = builder["User ID"]; 
var password = builder["Password"]; 

请注意,为OLE DB连接字符串,只有标准的跨供应商的属性都强类型属性名称,其余的都通过索引器访问。

2
data source=([^;]*);Initial Catalog=([^;]*);user id=([^;]*);Password=([^;"]*) 

然后你在组1到4中有匹配。如果你感到无聊,你可以命名组;有助于代码的可读性,但很少有助于正则表达式本身的可读性。

+0

非常感谢你 – subramani 2009-10-27 09:36:14

+0

+1因为subramani只说谢谢,从来没有听说过接受或投票显然 – Peter 2009-10-27 09:58:00

1

使用';'分割值不是更容易吗? char,然后按'='字符分割每个项目?

这样您的连接字符串可以由用户编辑,甚至项目的顺序可以改变。

6

不要使用正则表达式。

使用SqlConnectionStringBuilder解析连接字符串,然后从中访问密钥。

var b = new SqlConnectionStringBuilder(myConnectionString); 
var dataSource = b["Data Source"]; 
// etc. 

更简单,更可维护,更可靠。