Я пытаюсь создать в perl свою собственную версию команды вырезания Unix. Я хотел бы проверить значения, заданные параметру -f.Проверка "cut -f values" с помощью regexp
Вот пример, как мой сценарий Perl должен быть выполнен правильно:
perl mycut -f -47,49,53,56-60,71-
Я хотел бы подтвердить эти цифры, набранные пользователем. Я пробовал что-то вроде этого:
(([1-9]+[0-9]*[-][1-9]+[0-9]*)|([1-9]+[0-9]*[-]+)|([-]?[1-9]+[0-9]*))+,?
, но он возвращает true, если пользовательские типы например: -2-5, что неверно.
правильные примеры:
-7,10,21,23-33,39-80,99,116-120
21-25,32,33,41
1,2,4,5-
7
не "так хорошо", как и выше, но я могу справиться с ними:
32,17,-4,15,22-
-7,14-,15,2,6,18-
11,81,65-69,18,2,81
неправилен:
0
1,2,3,4,-5-6
-1-2,0,2,17-18
-25,28,-29-30,32
0,1,2,3,4,5
0-1,2-3
-2-7,9,11-
Может кто-нибудь помочь мне решить эту проблему проблема?
С уважением
Не могли бы вы привести список примеров, которые должны соответствовать таху, и еще один, который не должен ... или лучше объяснить, какова должна быть правильная структура ... – Enissay
Выполнено. С параметром -f вы указываете список полей, которые предполагается разделять. Например, если вы укажете -f 1,7, команда cut выпишет только первое и седьмое поля. (Я скопировал и преобразовал определение из IBM) – Hladeo
Я нашел ['this'] (http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix .cmds% 2Fdoc% 2Faixcmds1% 2Fcut.htm) справочная страница, чтобы помочь понять структуру, если кто-то пытается помочь ... – Enissay