On 9/20/07, Matt McCredie <mccredie@gmail.com> wrote:
> Any common knowledge IP matching RE?
I don't know if there is any common knowledge RE, but I came up with
the following:
r"((1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.){3}(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)")
Thank you. I will use that!
I generally discourage people from using REs. I think the folowing is
much easier to read:
Well, I need the regex to be used withing a parser (yeanpypa or ZestyParser), so I need it to be a regex to be matched against, and not a piece of code .
I could probably use a more simplistic re that does not check numeric validity, and do that later, but your re would do both matching and validation in one step.
Dan
def isip(x):
octs = x.split(".")
if len(octs) != 4:
return False
for oct in octs:
if len(oct) > 1 and oct[0] == "0":
return False
try:
if not 0 <= int(oct) < 256:
return False
except ValueError:
return False
return True
Both solutions seem to work, though I used a small set of test cases.
Others may have better suggestions.
Matt