Reg-выражение в C#
-
06-07-2019 - |
Вопрос
Я дал приведенную выше строку, я хочу получить адрес сервера, DB1, uid и **** эти значения из этой строки.
Решение
Нет необходимости анализировать строку подключения, если BCL может сделать это за вас:
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"];
Обратите внимание, что для строки подключения OLE DB только стандартные межпоставочные свойства имеют строго типизированные имена свойств, а все остальные доступны через индексатор.
Другие советы
Не используйте регулярное выражение.
Разберите строку подключения, используя SqlConnectionStringBuilder
а затем получить доступ к ключам оттуда.
var b = new SqlConnectionStringBuilder(myConnectionString);
var dataSource = b["Data Source"];
// etc.
Гораздо проще, ремонтопригоднее и надежнее.
data source=([^;]*);Initial Catalog=([^;]*);user id=([^;]*);Password=([^;"]*)
Затем у вас есть совпадения в группах с 1 по 4.Если вам скучно, вы можете назвать группы;улучшает читаемость кода, но редко улучшает читаемость самого регулярного выражения.
Разве не проще разделить значение, используя ';'; char, а затем разделите каждый элемент на '=' char?
Таким образом, пользователи смогут редактировать строку подключения и даже менять порядок элементов.