Использование регулярных выражений для поиска специально отформатированных полей - PullRequest
1 голос
/ 11 декабря 2008

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

Шаблон регулярного выражения: .*,\"<money>(.+,.+)\",?.*

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

Ответы [ 2 ]

2 голосов
/ 11 декабря 2008

Запятые разрешены в 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"

0 голосов
/ 11 декабря 2008

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

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

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

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

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

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

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

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