Чтение текста с использованием регулярных выражений - PullRequest
0 голосов
/ 17 июня 2010

Я хочу извлечь все значения из текстовой строки ниже с помощью регулярных выражений:

(Продажи (Тип 0 0 0 0 000 0 0 0 0 ) " Product"" ProductType"" "" 0000"" 0000") ;; ProductName 000

Какнаписать регулярное выражение для этого?Я использую C #.

Я использую следующий код для чтения текстового файла

 string expr = @"^\(Sales \(Type \d \d((?: \d+){7})\) "([^"]+)" "([^"]+)" "" "(\d+)" "(\d+)"

";
Regex regex = new Regex (expr);

        using (StreamReader r = new StreamReader(@"C:\records.log"))
        {

            while ((line = r.ReadLine()) != null)
            {


                foreach (Match m in regex.Matches(line))
                {
                   string value = m.Value.Trim();
                   MessageBox.Show(value);
                }
            }
        }

это правильно? Но я не могу получить значение

Ответы [ 3 ]

2 голосов
/ 17 июня 2010
^\(Sales \(Type \d \d((?: \d+){7})\) "([^"]+)" "([^"]+)" "" "(\d+)" "(\d+)"

соответствует этим значениям в строке образца

  • соответствует группе 1: ' 0 0 000 0 0 0 0' (обрезать содержимое и разделить на пробелы, чтобы получить отдельные значения)
  • группа совпадений 2: 'Product'
  • группа совпадений 3: 'ProductType'
  • группа совпадений 4: '0000'
  • группа совпадений 5: '0000'

Вы также можете просто разбить всю строку на пробел и выбрать нужные части, совершенно без регулярных выражений. Однако регулярные выражения гарантируют, что строка выглядит правильно, в то время как простое разбиение - нет.

1 голос
/ 17 июня 2010

Это может быть полезно, введите в строку, для которой вы хотите сгенерированное регулярное выражение, и оно сгенерирует RegEx на выбранном языке. http://txt2re.com/

Ли

0 голосов
/ 17 июня 2010

Возможно, вы можете разделить на [( ";]+, то есть одну или несколько скобок, пробелы, кавычки или точки с запятой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...