【问题标题】:Python - checking for an ip address (and nothing after it) [duplicate]Python - 检查IP地址(之后什么都没有)[重复]
【发布时间】:2017-04-03 08:36:57
【问题描述】:

我正在尝试创建一个 Python (2.7) 函数,该函数将接受一个字符串并在其输入是 IP 地址时返回 true,最后可能带有斜杠,否则返回 false。 如果字符串不仅仅是一个 IP 地址,而是一个 IP 地址后跟某种路径,它需要返回一个 false 值。 该地址是否为有效 IP 无关紧要(999.999.999.999 可以被视为 IP 地址)。

例如: “124.131.141.248” - 真 “124.131.141.248/” - 真 “124.131.141.248/bla” - 错误 “你好世界” - 错误

我尝试过寻找解决方案,但大多数解决方案只是检查有效的 IP 地址,而忽略了我的其他需求。

任何帮助将不胜感激。

谢谢,

【问题讨论】:

标签: python regex


【解决方案1】:

使用简单的正则表达式很容易解决:

import re
pattern = re.compile("\d{3}\.\d{3}\.\d{3}\.\d{3}(\/)?$")
string1 = "124.131.141.248"
string2 = "124.131.141.248/"
string3 = "124.131.141.248/bla"
string4 = "hello world" 
print(pattern.match(string1)!=None) # true
print(pattern.match(string2)!=None) # true
print(pattern.match(string3)!=None) # false
print(pattern.match(string4)!=None) # false

Here 一个正在运行的示例。

【讨论】:

  • 谢谢!这似乎行得通,我应该自己想到的
【解决方案2】:

这似乎有效:

import re
def valid_ip(ip):
    if re.match(r'(\d+\.?){4}\\?$', ip):
        return True
    else:
        return False

【讨论】:

  • 为什么^ 在正则表达式的末尾?
  • 我的错,$ 是对的。
猜你喜欢
  • 1970-01-01
  • 2016-08-28
  • 2020-05-23
  • 2012-08-03
  • 1970-01-01
  • 2013-12-06
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多