Python正则表达式ip



我认为IP只能在0.0.0.0到255.255.255.255之间。我看到了很多复杂的regex答案来匹配和验证堆栈溢出上的IP地址。告诉我我的怎么了。

ip = re.compile(r'[0-2]*[0-5]*[0-5]*.[0-2]*[0-5]*[0-5]*.[0-2]*[0-5]*[0-5]*.[0-2]*[0-5]*[0-5]*')

它有效。

我完全理解你为什么使用[0-2]*[0-5]*[0-5]*,我相信我也犯过类似的错误。这里的问题是它只能匹配000-055、100-155、200-255。你需要的代码应该是这样的:

(?:(?:[01]*[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))

对于每个三位数的序列。

本质上,您是在告诉regex输入应该具有以下任一项:

  • 从0到199的任何数字,由[01][0-9][0-9]给出
  • 2[0-4][0-9]给出的从200到249的任何数字
  • 25[0-5]给出的250到255之间的任何数字

最新更新