Использование регулярных выражений для поиска специально отформатированных полей

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

Шаблон Regex: .*,\"<money>(.+,.+)\",?.*

И значения, которые я пытаюсь сопоставить, будут такими 2700, 2650 and 2600 in "2,700","2,650","2,600".

10.12.2008 23:04:01
2 ОТВЕТА

Запятые допускаются в CSV и не должны вызывать проблем, если вы используете текстовый квалификатор (обычно двойная кавычка ").

Вот подробности: http://en.wikipedia.org/wiki/Comma-separated_values

На регулярное выражение:

Этот код работает для ваших примеров данных (но допускается только одна запятая, в основном тысячи разделенных чисел до 999 999):

string ResultString = null;
try {
    ResultString = Regex.Replace(myString, "([0-9]{1,3})(?:(,)?([0-9]{3})?)", "$1$3");
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}

Требуется это:

Тест 12,205 Тест 26,000. И значения, которые я пытаюсь сопоставить, будут 2700, 2650 и 2600 в «2700», «2650», «2600»

и производит это:

Тест 12205 Тест 26000. И значения, которые я пытаюсь найти, будут 2700, 2650 и 2600 в «2700», «2650», «2600».

2
20.04.2016 19:19:30
РЕШЕНИЕ

Спасибо за ответ Райан. Я должен был сдерживать свой характер немного больше. Хотя все еще запятые в CSV, которые не разделяют значения?

Спросив в офисе, я указал на бесплатное дизайнерское приложение Regex, которое использовал для создания необходимого шаблона. Приложение Rad Software Дизайнер регулярных выражений

О, и для целей ответа шаблон, с которым я вышел: \"(?<money>[0-9,.$]*)\"

Редактировать: Финал Андвер

Ого. Полностью забыл об этом вопросе. Я еще больше поигрался с регулярным выражением и вышел с таким, который соответствовал бы всему, что мне было нужно. Регулярное выражение:

\"([0-9.$]+(,[0-9.]+)+)\"

Это регулярное выражение смогло сопоставить любую строку deciaml в двойной кавычке, которую я бросил в нее.

0
23.01.2009 02:02:53