【问题标题】:Python regex ip [duplicate]Python正则表达式ip [重复]
【发布时间】:2020-09-14 06:40:30
【问题描述】:

我相信 IP 的范围只能从 0.0.0.0 到 255.255.255.255。我看到很多复杂的正则表达式答案来匹配和验证堆栈溢出时的 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]*\')

有效。

【问题讨论】:

  • 试试这个正则表达式'\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b'

标签: python regex validation ip


【解决方案1】:

我完全理解你为什么使用[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]))

对于每个三位数序列。

本质上,您是在告诉正则表达式输入应该有:

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

【讨论】:

  • 啊我现在看到了。谢谢!
  • 没问题,很高兴为您提供帮助。如果该解决方案完全解决了您的问题,如果您可以将此答案标记为正确以供将来参考,那就太好了:)
  • 我是新手所以不会让我把它标记为正确的。我会回到这个:)
猜你喜欢
  • 2014-07-03
  • 2015-10-26
  • 2016-04-22
  • 2016-11-16
  • 2017-03-15
  • 2013-05-19
  • 2012-07-13
  • 2014-02-05
相关资源
最近更新 更多