简体   繁体   English

正则表达式从连接字符串中检索密码

[英]Regular Expression to retrieve password from connection string

How do I write a regular expression to retrieve password from connection string. 如何编写正则表达式以从连接字符串中检索密码。

Connection string is like this: 连接字符串是这样的:

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

or 要么

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

or 要么

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

or 要么

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

Tried the approach of using ConnectionStringBuilder. 试过使用ConnectionStringBuilder的方法。 Works for SQL Server. 适用于SQL Server。 But in case of Oracle it throws this exception: 但是在Oracle的情况下它抛出了这个异常:

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

The Oracle Connection String: 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)))"

Is there a requirement that you have to use a regular expression ? 是否要求您必须使用正则表达式? .NET has the functionality built in: .NET具有内置的功能:

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

This is likely to be more robust than using a regular expression for that. 这可能比使用正则表达式更强大。 The rules for the fields are rather comprehensive, and it is easy to make a Regex that will work for most connectionstrings, but will fail on some. 这些字段的规则相当全面,很容易制作适用于大多数连接字符串的正则表达式,但在某些字符串上会失败。 See the connection string rules for a list of the rules that must be embedded in such a Regex. 请参阅连接字符串规则 ,以获取必须嵌入此类Regex中的规则列表。

正则表达式:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM