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。但在 Oracle 的情况下,它会抛出此异常:

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)))"
4

2 回答 2

9

是否要求您必须使用正则表达式?.NET 具有内置的功能:

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

这可能比使用正则表达式更健壮。字段的规则相当全面,很容易制作一个适用于大多数连接字符串的正则表达式,但在某些连接字符串上会失败。有关必须嵌入此类 Regex 的规则列表,请参阅连接字符串规则。

于 2012-09-04T20:49:02.217 回答
1

正则表达式:

.*PASSWORD[ ]*=[ ]*([^;]+)
于 2012-09-04T20:48:32.513 回答