Извлечение данных из строки с использованием регулярных выражений - PullRequest
0 голосов
/ 29 августа 2009

Мне нужна помощь в извлечении следующих битов информации с помощью регулярных выражений.

Вот моя входная строка "C: \ Yes"

******** Отсутствующий символ в начале строки и между, но не в конце = странный верхний индекс L. ***

Мне нужно извлечь "C: \" в одну строку и "Да" в другую.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 29 августа 2009

Я бы не стал использовать регулярные выражения для этого. Слишком много работы, и я бы с большой вероятностью облажался.

var x = @"C:\Yes";

var root = Path.GetPathRoot(x);  // => @"C:\"
var file = Path.GetFileName(x);  // => "Yes"
1 голос
/ 29 августа 2009

Следующее регулярное выражение возвращает C:\ в первой группе захвата, а остальные во второй:

 ^(\w:\\)(.*)$

Это выглядит так: полная строка (^…$) начинается с буквы (\w, хотя [a-z], вероятно, будет более точной для букв диска Windows), за которой следует :\. Все остальное (.*) захвачено во второй группе.

Обратите внимание, что это не будет работать с путями UNC. Если вы работаете с путями, лучше всего не использовать строки и регулярные выражения, а использовать API из System.IO. Найденные там классы уже предлагают ту функциональность, которая вам нужна.

0 голосов
/ 29 августа 2009
Regex r = new Regex("([A-Z]:\\)([A-Za-z]+)");
Match m = r.Match(@"C:\");

string val1 = m.Groups[0];
string val2 = m.Groups[1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...