python re正则提取ip地址_python 正则表达式匹配IP地址

一、实验环境

1.Windows7x64_SP1

2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装)

3.pyinstaller3.0

二、实验目的

从text文本中获取字符串,筛选合法IP地址

2.1 文本内容如下

请输入合法IP地址,非法IP地址和其他字符将被过滤!

增、删、改IP地址后,请保存、关闭记事本!

192.168.8.84

192.168.8.85

192.168.8.86

0.0.0.1

256.1.1.1

192.256.256.256

192.255.255.255

aa.bb.cc.dd

2.2 编写函数读取文本文件,筛选合法IP地址

def get_ip_list(self):

try:

file = open(self.smart_ip_list_file, 'r')

str = file.readlines()

str_del_enter = [x.strip('\n') for x in str] #去除\n

comp = re.compile(r'^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}')

str_legal_ip = [x for x in str_del_enter if comp.match(x)] #筛选合法IP地址

file.close()

return str_legal_ip

except:

self.ui.textEdit.setText('读取"%s"报错' %(self.smart_ip_list_file))

return []

2.3 代码说明

1.从文本文件中读取所有行,除首行外均以\n结束,如下代码用于去除\n

str_del_enter = [x.strip('\n') for x in str]

2.IP地址的长度为32位(共有2^32个IP地址),分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开

根据规则:每段相同,范围都在 0 ~ 255

0~255 对应的正则表达式为 (2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2}

2(5[0-5]|[0-4]\d) 匹配:200 ~ 255

[0-1]?\d{1,2} 匹配:0 ~ 199

0 到 255 的式子已经写出来了,那么一共四段再加上中间的点就很容易了

后边“点”和“数字”重复三次就可以了,(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}

全部合起来,((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}

通过如上正则表达式匹配字符串,存在如下问题

256.1.1.1 -> 匹配结果56.1.1.1

解决方式,如上表达式前面添加^,最终调用compile函数,参数方式如下

comp = re.compile(r'^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}')

python中利用正则表达式匹配ip地址

现在有一道题目,要求利用python中re模块来匹配ip地址,我们应如何着手? 首先能想到的是ip地址是数字,正则表达式是如何匹配数字的呢? \d或[0-9] 对于这个问题,不要一下子上来就写匹配模式 ...

使用正则表达式匹配IP地址

IP地址分为4段,以点号分隔.要对IP地址进行匹配,首先要对其进行分析,分成如下部分,分别进行匹配:   第一步:地址分析,正则初判 1.0-9 \d 进行匹配 2.10-99 [1-9]\d 进行匹 ...

正则表达式匹配IP地址

'''首先分析ip地址的特征:255.255.255.255,前三位的数字处理基本一致 1位: 0-9              \d2位:10-99         [1-9]\d3位:100-19 ...

C# 正则表达式 匹配IP地址

\b(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])\b

python 正则表达式匹配ip

>>> re.match(r'^(([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]|[1-9]\d|1\d\d|2[0-4]\d| ...

Python 使用正则表达式匹配IP信息

使用正则表达式匹配IP地址 .MAC地址 .网卡名称: #!/usr/bin/env python #-*- coding:utf-8 -*- import re from subprocess im ...

正则表达式通用匹配ip地址及主机检测

在使用正则表达式匹配ip地址时如果不限定ip正确格式,一些场景下可能会产生不一样的结果,比如ip数值超范围,ip段超范围等,在使用正则表达式匹配ip地址时要注意几点: 1,字符界定:使用  \< ...

python匹配ip地址

ip地址是用3个'.'号作为分隔符,分割4个数字,每个数字的取值在[0,255],一般日志文件中的ip地址都是有效的ip地址,不需要我们再去验证,因此,若从日志文件中提取ip,那么可以简单写成这样: ...

正则表达式检测IP地址与端口号是否合法

正则表达式检测IP地址与端口号是否合法,代码如下: 正则表达式检测IP地址 public static bool CheckAddress(string s) { bool isLegal = fal ...

随机推荐

sqlmap笔记

sqlmap -u "注入链接" --其他参数或命令 (-v 1表示回显出注入过程) [判断指定字段是否存在注入点]当链接包含两个参数时,可用-p开关选择要注入的参数,例检测id是 ...

关于实现banner轮换的问题,如何修改

最近遇到了这样的问题,本来banner都是gif格式的,但是现在要求上传图片格式为jpg时,运用JS实现动画效果,原来的也能用. aspx:

关于js运动的一些总结

js运动实现,有两种.一种是速度版,另一种是时间版. 速度版是通过对速度的加减乘除,得出元素的运动数据.时间版是通过对时间进行Tween公式运算,得出元素的运动数据. 速度版运动优点:容易在运动过程中 ...

iOS - 文件与数据(File &; Data)

01 推出系统前的时间处理 --- 实现监听和处理程序退出事件的功能 //视图已经加载过时调用 - (void)viewDidLoad { [super viewDidLoad]; // Do any ...

shell grep

grep "str" file > /dev/null if [ $? -eq 1]; then echo "no str" else echo &quo ...

VS2015 与 Git 的简单使用

前言 在白忙之中抽了点时间,记录了下 VS 与 Git 的简单使用. 在之前使用命令行的时候,提交或拉取代码时,总报错:(提取时遇到错误: Unsupported URL protocol),后来在网 ...

数据迁移_老集群RAC迁移数据恢复到新集群RAC

数据迁移_老集群RAC迁移数据恢复到新集群RAC 作者:Eric 微信:loveoracle11g 1.把老集群RAC备份的数据远程拷贝到新集群RAC [root@old-rac-node1 ~]# ...

使用Charles对Android App的https请求进行抓包

本文背景 公司新项目要求抓取目前市面上一些热门App的数据,经过研究发现很多App的网络请求都使用https进行数据传输,这样问题就来了,http使用明文传输所有请求都能拦截到,而https请求无法拦 ...

Win10系统下如何禁止同步主机session?windows 10禁止同步主机session的方法

近来,有些刚刚升级Win10正式版的用户反映自己的电脑开机时有个同步主机session启动项占用了将近半分钟,而选择用360禁止后,下次会出现同步主机session3,再禁止下次又会出现同步主机ses ...

Android Gradle Plugin指南(五)——Build Variants(构建变种版本号)

你可能感兴趣的:(python,re正则提取ip地址)