Reg Expressão em C #
-
06-07-2019 - |
Pergunta
Eu dei a seqüência acima, eu quero começar o ServerIPAddress, DB1, uid e **** estes valores dessa string.
Solução
Não há necessidade de analisar uma seqüência de conexão quando o BCL pode fazê-lo para você:
var builder = new OleDbConnectionStringBuilder(connectionString);
var provider = builder.Provider;
var dataSource = builder.DataSource;
var initialCatalog = builder["Initial Catalog"];
var userID = builder["User ID"];
var password = builder["Password"];
Note que para uma cadeia de conexão OLE DB, nomes de propriedades somente as propriedades da cruz do provedor padrão já fortemente tipados, tudo o resto são acessados ??por meio do indexador.
Outras dicas
Não use um regex.
Analise a cadeia de conexão usando SqlConnectionStringBuilder
e, em seguida, acessar as chaves a partir daí.
var b = new SqlConnectionStringBuilder(myConnectionString);
var dataSource = b["Data Source"];
// etc.
Muito mais fácil, mais sustentável e mais confiável.
data source=([^;]*);Initial Catalog=([^;]*);user id=([^;]*);Password=([^;"]*)
Você tem então as partidas dos grupos 1 a 4. Se você se cansar você pode nomear os grupos; ajuda a legibilidade do código, embora raramente ajuda a legibilidade do próprio regex.
Não é mais fácil para o valor de divisão usando ';' caractere e, em seguida, dividir cada item por '=' char?
Desta forma, a cadeia de ligação poderia ser editados por usuários e fim item, mesmo poderia ser alterado.