RegEx группы в C # - PullRequest
       1

RegEx группы в C #

2 голосов
/ 25 августа 2011

У меня есть строка с информацией о продукте, и я хотел бы проанализировать эту строку и прочитать информацию о продукте.

Моя строка выглядит так:

ID: 1
NAME: Product name
INFORMATION: Here goes the information about a product 
STATUS: Available

Я бы хотел разобрать этот текст следующим образом:

string id = product id;
string name = product name;
string info = product information; 
string available = product availability; 

Как мне это сделать. Я знаю, что это возможно с группами, но я застрял и не знаю, как это сделать.

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

1 Ответ

4 голосов
/ 25 августа 2011

Вы можете довольно легко анализировать данные, например, в словарь.Обратите внимание, что здесь вам не нужно регулярное выражение, без него еще приятнее:

var values  = data.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
                  .Select(line => line.Split(":".ToCharArray(), 2))
                  .ToDictionary(pair => pair[0], pair => pair[1], 
                                StringComparer.OrdinalIgnoreCase);
string name = values["name"];

Опция регулярного выражения с некоторым усечением пробела:

var values = Regex.Matches(data, @"^(?<Key>\w+)\s*:\s*(?<Value>.*?)\s*$", RegexOptions.Multiline)
                  .Cast<Match>()
                  .ToDictionary(m => m.Groups["Key"].Value,
                                m => m.Groups["Value"].Value,
                                StringComparer.OrdinalIgnoreCase);
...