请教一个正则表达式,连续5个整数,每个整数取值0-65535,整数间逗号隔开
请教一个正则表达式,连续5个整数,每个整数取值0-65535,整数间逗号隔开,
如0,1,65535,2,65534
下面的情况时不满足表达式要求的
少位数:0,1,65535,2,
多位数:0,1,65535,2,0,1
溢出范围:0,1,6523535,2,0,1
我这么写不行:[0-65535],[0-65535],[0-65535],[0-65535],[0-65535]
请大家赐教,谢谢。
[解决办法]
用正则表达式表示数值范围很不方便,建议你先用正则表达式匹配5个整数,再检查匹配的结果。
[解决办法]
\b[0-6]?[0-5]?[0-5]?[0-3]?[0-5]\b
[解决办法]
用python不是很简单就搞定了,如果数据量不大不考虑性能的话
[解决办法]
#!/usr/bin/perlmy $num_range_re = qr#\b(?:6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5]|[0-5]?\d?\d?\d?\d)\b#;my $all_re = qr#\b(?<!,)(?:(?:$num_range_re\,){4}(?:$num_range_re))(?!,)\b#;while (<DATA>){ chomp; if (/($all_re)/) { print $1; print "\n"; } else { print "$_ is invalid num\n"; }} __DATA__0,1,65535,2,0,1,65535,2,0,10,1,6523535,2,0,10,0,0,0,065535,65535,65535,65535,65535