2009-10-27 54 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. 

更簡單,更可維護,更可靠。