2012-09-04 63 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以获取必须嵌入此类正则表达式中的规则列表。