>
>> example below, it fails to match "host-no.top-level" as a valid host
>> name. I modify the regex several times - but still don't get the
>> right
>> outlook.
>>
>> my @hosts = qw(192.168.22.1 192.168.22.18 localhost
>> another.host.domain
>> host-no.top-level my.host.domain.com);
>> foreach (@hosts){
>>     # Works ok
>>     push (@ips, $_ ) if $_ =~ /^\d{1,3}\.\d{1,3}\.\d{1|3}/;
>>
>>     # Can't match "host-no.top-level".
>>     push (@dns, $_) if $_ =~ /^\w+-?[\w+]?\.?[\w+.{1}]*\w+$/;
>> }

I'm just beginning to learn a bit about some of the more obscure
regex's, but I'd like to ask if this following regex would ensure no
IP's got trapped in the @dns array? (Assuming that no .tld ends in a
\d):

push (@dns, $_) if $_ =~ /^\w+-?[\w+]?\.?[\w+.{1}]*[a-zA-Z]{2,3}$/;

Steve




>
>
>
>
>  /^\w+-?[\w+]?\.?[\w+.{1}]*\w+$/------>Here you look for only one "-"
> and
> also not allowing any other non-word charaters(like hyphen).
>
> The "." can match any character even other than "-" .
>
> You can think like this:(For IP's)
>                          search for a number with maximum 3 digits and
> then followed by the same kind of 3 numbers but prefixed with a dot.
> Try this ---> $_ =~ /^\d{1,3}[\.\d{1,3}]{3}/
>
> You can think like this:(For DNS's)
>                         search for a WORD which may(-?) contain hyphen
> within it and then followed by the same kind of zero-or-more-WORDs
> but prefixed with a dot which is a normal dns name pattern.
>
> Try this ----> $_ =~ /^\w\w*-?\w+?[\.\w\w*-?\w+?]*$/
>
> But this will allow IP's also in your "@dns" because \w can match
> digits
> also.
>
>
>
> --
> Regards,
> K.Prabakar
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
>
>
>



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to