【发布时间】: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
我有像这样的正则表达式
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
这将匹配 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^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})))?$|^$
【讨论】: