【问题标题】:How to modify regular expression for ip:port?如何修改 ip:port 的正则表达式?
【发布时间】:2014-06-25 20:39:46
【问题描述】:

我有像这样的正则表达式

match = re.findall(r'[0-9]+(?:\.[0-9]+){3}', source)

从源字符串中获取类似 192.168.1.1 的内容可以正常工作。 如何修改此正则表达式以使其与以下内容一起使用:

192.168.1.1:80

感谢您的帮助。

附:对不起我的英语不好。

【问题讨论】:

标签: regex python-2.7 ip-address


【解决方案1】:

这将匹配 IP 地址和端口号。

match = re.findall(r'[0-9]+(?:\.[0-9]+){3}:[0-9]+', source)

如果您想灵活地匹配不带端口和带端口的 IP 地址,您可以使用:

match = re.findall(r'[0-9]+(?:\.[0-9]+){3}(:[0-9]+)?', source)

【讨论】:

    【解决方案2】:

    由于没有考虑最高端口号((2^16 - 1) 或 65,535)(在上面的解决方案中),这应该是您的情况的正则表达式:

    ^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})){3}(:((6553[0-5])|(655[0-2][0-9])|(65[0-4][0-9]{2})|(6[0-4][0-9]{3})|([1-5][0-9]{4})|([0-5]{1,5})|([0-9]{1,4})))?$|^$
    

    【讨论】:

      猜你喜欢
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 2013-02-07
      相关资源
      最近更新 更多