我想在perl中创建我自己版本的Unix的cut命令。我想验证赋予-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-
谁能帮我解决这个问题?
Regards
你可以给出一个应该匹配的例子列表,以及另一个不应该...或者更好地解释什么是正确的结构应该是... – 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