【问题标题】:Python returns null when using regex [closed]Python在使用正则表达式时返回null [关闭]
【发布时间】:2020-12-07 07:39:03
【问题描述】:

我正在尝试使用正则表达式来查看给定的字符串是否是 IPv4 地址。我想根据字符串返回一个布尔值True/False。这是我的代码:

import re

def isIPv4Address(inputString):
    pattern = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\s')
    
    return pattern.match(inputString)

值为空。在这一点上,我可以看出该函数没有返回布尔值。然而,我看到的关于正则表达式和 IP 地址的所有问题都是关于编写模式而不是完整的实现。我知道实际的实现不应该比这更长,因为它只是接受输入并将其与正则表达式进行比较。

【问题讨论】:

  • 提供一些失败的示例数据,并请解释\s 在您的模式结束时正在做什么。如果是为了确保 IP 地址后面有空格,那为什么不在前面呢?您将如何处理完全有效的"172.16.4.4",并带有no 个空格?
  • @paxdiablo Tbh,我从另一个 SO 帖子中得到了表达..

标签: python regex ipv4


【解决方案1】:

match 返回匹配项(re.Match 对象),如果表达式不匹配,则返回None。如果你想返回一个布尔值是否匹配正则表达式,你可能想使用pattern.match(inputString) is not None

【讨论】:

  • 输入"172.16.254.1"时代码失败。我觉得我的表达方式不对。
  • @oo92 你的表达式末尾有一个 \s (空格),它不在你的字符串中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 2017-11-13
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 2012-09-01
相关资源
最近更新 更多