Reg Ex для сопоставления чисел и запятых - PullRequest
1 голос
/ 18 июня 2009

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

23,2,4,56,78,9,4,6

Количество значений в строке, разделенных запятыми, должно быть больше 5 (или что угодно).

Я делаю это в Perl.

Ответы [ 5 ]

11 голосов
/ 18 июня 2009
/^(\d+,){4,}\d+$/

Совпадение с набором цифр и запятой. Пара цифра-запятая рассматривается как группа, которая должна повторяться как минимум четыре раза. Затем вы соответствуете последнему числу в последовательности, за которым не нужно ставить запятую.

Если вам не нужно захватывать цифры, используйте группы без захвата (будет немного быстрее):

/^(?:\d+,){4,}\d+$/
1 голос
/ 18 июня 2009
/\d{1,3}(,\d{3}){0,4}/

Это будет соответствовать только правильно отформатированным числам, разделенным запятыми (например, 100 000 000). Все еще ужасная идея иметь разделенные запятыми числа в файле, разделенном запятыми, но я отвлекся. У этого регулярного выражения меньше всего проблем в контексте.

0 голосов
/ 19 июня 2009

Возможно, вы захотите использовать [0-9] вместо \ d, поскольку \ d может соответствовать вещам, которые Unicode считает числами, но не являются стандартными арабскими цифрами.

0 голосов
/ 19 июня 2009
/\d+(?:,\d+)*/

или включая отрицательные числа

/-?\d+(?:,-?\d+)*/
0 голосов
/ 18 июня 2009

Для чего угодно:

/^([0-9]\+,?)\+$/

Отредактировано для исправления ошибки, указанной в комментарии.

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