#!/usr/bin/perl -w use strict; my $grp = qr/\[\d+-\d+\]/; for () { print if /\d+\.\d+\.$grp\.(\d+|$grp)/; } __DATA__ 123.145.[146-149].2 135.168.[10-115].[0-125] 135.168.12.[0-125] #### #!/usr/bin/perl -w use strict; my $grp = qr/^123\.145\.(\d+)\.(\d+)$(??{ $1 >= 146 && $1 <= 148 ? '' : 1})/; for () { print if /$grp/; } __DATA__ 123.145.130.3 123.145.146.3 123.145.147.3 123.145.148.3 123.145.149.3