rbt wrote:

> Is it possible to use re.compile to exclude certain numbers? For
> example, this will find IP addresses:
> 
> ip = re.compile('\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}')
> 
> But it will also find 999.999.999.999 (something which could not
> possibly be an IPv4 address). Can re.compile be configured to filter
> results like this out?

You could use another regular expressin, e.g. like this:

import re

rex = re.compile(r"^((\d)|(1\d{1,2})|(2[0-5]\d))$") 

for i in xrange(1000):
    m = rex.match(str(i))
    if m:
        print m.groups(), i


This is of course only for one number. Extend it accordingly to the ip4
address format.

However, you won't be able to suppress the matching of e.g. 259 by that
regular expression. So I'd suggest you dump re and do it like this:

address = "192.168.1.1"

def validate_ip4(address):
    digits = address.split(".")
    if len(digits) == 4:
        for d in digits:
            if int(d) < 0 or int(d) > 255:
                  return False
    return True

-- 
Regards,

Diez B. Roggisch
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to