2012-09-04 100 views
2

如何編寫正則表達式以從連接字符串中檢索密碼。正則表達式從連接字符串中檢索密碼

連接字符串是這樣的:

USER ID=system;PASSWORD = ab;DATA .. 

USER ID=system;PASSWORD=ab;DATA ... 

USER ID=system;PASSWORD =ab;DATA... 

USER ID=system;PASSWORD= ab;DATA ... 

試過了使用ConnectionStringBuilder的方法。適用於SQL Server。但在甲骨文的情況下,拋出此異常:

Invalid length for connection option 'Data Source', maximum length is 128. 

的Oracle連接字符串:

USER ID=sa;PASSWORD=abc;DATA SOURCE="(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 8080))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = Orcl)))" 
+1

那麼密碼從不包含分號或空格? – BlueM

+1

使用'SqlConnectionStringBuilder'類可能會更容易:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx –

+1

Stackoverflow不適用於'寫我的代碼' – sra

回答

1

正則表達式:

.*PASSWORD[ ]*=[ ]*([^;]+) 
+1

密碼允許使用分號 – driis

+0

那麼密碼停止的地方在那裏。我不知道連接字符串中是如何逃脫分號的。 – BlueM

+0

http://www.connectionstrings.com/Articles/Show/important-rules-for-connection-strings – driis

9

有,你必須使用正則表達式的要求? .NET具有內置的功能:

var sb = new SqlConnectionStringBuilder("USER ID=system;PASSWORD =ab;"); 
Console.WriteLine(sb.Password); 

這比使用正則表達式更可靠。這些字段的規則是相當全面的,並且很容易製作一個正則表達式,它可以用於多數連接字符串,但是會失敗。請參閱the connection string rules以獲取必須嵌入此類正則表達式中的規則列表。