Выражение Reg в C # - PullRequest
       19

Выражение Reg в C #

0 голосов
/ 27 октября 2009

Я дал вышеуказанную строку, я хочу получить адрес службы, DB1, uid и **** эти значения из этой строки.

Ответы [ 4 ]

6 голосов
/ 27 октября 2009

Не используйте регулярные выражения.

Разобрать строку подключения, используя SqlConnectionStringBuilder, а затем получить доступ к ключам из этого.

var b = new SqlConnectionStringBuilder(myConnectionString);
var dataSource = b["Data Source"]; 
// etc.

Намного проще, удобнее в обслуживании и надежнее.

2 голосов
/ 27 октября 2009
data source=([^;]*);Initial Catalog=([^;]*);user id=([^;]*);Password=([^;"]*)

Затем у вас есть совпадения в группах от 1 до 4. Если вам скучно, вы можете назвать группы; помогает читабельности кода, хотя редко помогает читаемости самого регулярного выражения.

1 голос
/ 27 октября 2009

Нет необходимости анализировать строку подключения, когда 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 только стандартные свойства кросс-провайдера имеют строго типизированные имена свойств, все остальные доступны через индексатор.

1 голос
/ 27 октября 2009

Не проще ли разделить значение с помощью ';' символ, а затем разделить каждый элемент по '=' char?

Таким образом, ваша строка подключения может быть отредактирована пользователями и даже порядок элементов может быть изменен.

...