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 に答える