1.正则表达式re

python中通过re模块实现正则表达式相关的功能,正则是一种模式匹配patter,通过模式匹配,实现对字符的搜索search和匹配match功能,正则表达式常用的原字符包括:原字符代表含义

literal代表字符串本身,如'hello'

.任意字符

^匹配字符串的开头

$匹配字符串的结尾

*匹配前面的正则表达式0次或者多次,相当于{0,}

+匹配前面的正则表达式1次或者多次,相当于{1,}

?匹配前面的正则表达式0次或者1次,相当于{0,1}

{M,N}匹配前面的正则表达式最少M次,最多N次

{N}匹配前面的正则表达式至少N次,相当于{N,}

[]匹配字符串组里面的任意一个字符,如[0-9],[a-z],[a-zA-Z]

[^]排除字符串组里面的任意字符,如[^a-zA-Z]表示排除所有的字母

\d匹配数字,相当于[0-9],如data\d.txt

\D和\d相反,相当于[^0-9]

\w匹配字母和数字,相当于[a-zA-Z0-9],如\w+

\W排除字母和数字,相当于[^a-zA-Z0-9]

\s空白符,包括tab,回车,相当于[\t\n\r\v\f]

2.正则表达式re例子

1.匹配数字>>> import commands

>>> network = commands.getstatusoutput('ifconfig')

>>> import re

>>> re.findall('[0-9]+',network[1])

#搜索了所有的数字,用\d+效果和上面相同

>>> re.findall('\d+',network[1])

扩展1:通过正则匹配各位数

>>> re.findall('\d',network[1])

扩展2:通过正则匹配0-99之间的数字,0-9之间的数字可以用[0-9]表示,10-99之间的数字可以用[1-9]{1,2},和在一起就是[0-9]{1,2}

>>> re.findall('[0-9]{1,2}',network[1])

扩展3:通过正则匹配0-255之间的数字,可以分为四段:0-99使用[0-9]{1,2},100,199使用1[0-9][0-9],200-249使用2[0-4][0-9],250-255使用25[0-5]来表示

>>> re.findall('[0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5]',network[1])

2. 匹配shell

>>> f = file('/etc/passwd','r')

>>> for line in f.readlines():

... re.findall('\/bin\/[a-z]*sh$',line.strip())

...

['/bin/bash']

[]

[]

['/bin/bash']

[]

['/bin/bash']

3. re模块常用方法

re是python实现正则表达式相关功能的模块,该模块包含多重方法,常见的方法包括:搜索search(),匹配match,查找所有findall(),编译compile(),切割split(),查找替换sub()等方法,下面开始介绍:

1. match(),匹配,从字符串的起始位开始搜索,找到则返回,没找到则为空>>> str = 'Hello python boys'

>>> if m is not None:

... print "匹配了字符串的起始关键字"

... print "匹配的字符串是:%s" % (m.group())

... else:

... print "不匹配"

...

匹配了字符串的起始关键字

匹配的字符串是:Hello

#如果不匹配的话

>>> m = re.match('python',str)

>>> print m

None

>>> if m:

... print "match,string is:%s" % (m.group())

... else:

... print "not match"

...

not match

@@注意,使用match()和search()函数,如果模式匹配成功的话,则模式会具有group()方法,即显示模式匹配成功的字符串,需要注意的是:match()函数从最开始匹配,而search()则是全文搜索

2.search(),从字符串的开始到结尾搜索,查到则返回,没找到则空>>> m = re.search('python',str)

>>> print m

<_sre.SRE_Match object at 0x1e37b28>

>>> if m:

... print "match,string is:%s" % (m.group())

... else:

... print "not match"

...

match,string is:python

3. compile(),编译正则表达式,方便重复使用,需要配配合search(),match(),findall()函数使用>>> regex=re.compile('python')

>>> regex.search(str)

<_sre.SRE_Match object at 0x1e37bf8>

>>> m = regex.search(str)

>>> print m

<_sre.SRE_Match object at 0x1e37c60>

>>> if m:

... print "match,string:%s" % (m.group())

... else:

... print "not match"

...

match,string:python

>>> m=regex.match(str)

>>> print m

None

4.findall(),从所有的字符串中查找,找到则加入到列表中,以列表的形式显示,如果没找到则列表为空>>> re.findall('o',str)

['o', 'o', 'o']

正则编译形式:

>>> regex=re.compile('o')

>>> regex.findall(str)

['o', 'o', 'o']

4.正则表达式获取IP地址

python正则匹配ip_python实战系列之正则获取IP地址(八)相关推荐

  1. 网络工程师实战系列视频课程【IP地址规划篇】(考题精讲 + 项目实战)-夏杰-专题视频课程...

    网络工程师实战系列视频课程[IP地址规划篇](考题精讲 + 项目实战)-1128人已学习 课程介绍         1.我的自学经历分享(分享我各个方向自学探索,终选定网络的过程,告诉大家:勇于尝试( ...

  2. python 解析域名_Python实现通过解析域名获取ip地址的方法分析

    本文实例讲述了Python实现通过解析域名获取ip地址的方法.分享给大家供大家参考,具体如下: 从网上查找的一些资料,特此做个笔记 案例1: def getIP(domain): myaddr = s ...

  3. linux qt获取网卡mac地址,QT实战获取主机名QT获取IP地址 获取MAC地址 获取广播地址...

    QT的网络东西也蛮多的,我们今天先学一部分,然后后面在学一部分吧 一个能使用网络的应用,我们需要在项目工程中的pro文件里进行标记QT += core gui #标记 网络 QT += network ...

  4. linux下载python的地址_Linux下Python获取IP地址的代码

    <lnmp一键安装包>中需要获取ip地址,有2种情况:如果服务器只有私网地址没有公网地址,这个时候获取的IP(即私网地址)不能用来判断服务器的位置,于是取其网关地址用来判断服务器在国内还是 ...

  5. python地址多少位_Python获取IP地址对应的地理位置信息!

    在学习中有迷茫不知如何学习的朋友小编推荐一个学Python的学习q u n 227 -435- 450可以来了解一起进步一起学习!免费分享视频资料 原理简介 利用了三个可以查询ip地址对应归属地的网站 ...

  6. Python编程获得本机所有网络链接的ip地址

    一.前言 本文使用Python编程获得本机所有网络链接的ip地址,主要思路为:通过os模块调用cmd命令ipconfig,将返回的结果 保存,然后使用re模块的正则表达式从结果中获得所有网络链接的ip ...

  7. Python获取IP地址的三种方法

    在python中获取IP地址的方法很简单,我们只和gethostbyname和gethostbyname_ex两个函数可以实现了,当然也可以利用公网api来实现. 使用拨号上网的话,一般都有一个本地i ...

  8. IPV4 跨网段扫描获取IP地址 python

    #!/usr/bin/env python #-*- coding:utf-8 -*- ############################ """ date: 20 ...

  9. Python正则表达式(正则、regular、re)讲解,及常用正则:匹配邮箱、身份证、手机号、IP地址、URL、HTML等

    正则表达式(正则.regular.re)是 Python 中最常见的编程技巧,很多时候,一个好的正则表达式可以抵上几十行代码.比如:匹配(校验)邮箱.身份证.手机号.IP地址.URL.HTML等. 正 ...

  10. php 正则匹配内容,php读取、正则匹配邮件内容的方法

    本篇文章主要介绍php读取.正则匹配邮件内容的方法,感兴趣的朋友参考下,希望对大家有所帮助. 本文实例讲述了PHP处理postfix邮件内容的方法.具体如下: //从输入读取到所有的邮件内容 $ema ...

最新文章

  1. 3.11 结论和致谢-深度学习第五课《序列模型》-Stanford吴恩达教授
  2. ucontext-人人都可以实现的简单协程库
  3. vscode新建html中文乱码,vscode中html中文乱码 怎么办
  4. ACM-ICPC 2018 焦作赛区网络预赛 H题 String and Times(SAM)
  5. idea 检测 重复代码_IDEA关掉重复代码波浪线
  6. 云钉一体,支撑5亿用户1900万企业背后的技术复盘
  7. linux 流程图软件有哪些,除了visio,流程图软件还有哪些?
  8. php模拟QQ登录获得skey码,PHP模拟QQ网页版授权登陆
  9. Html基本标签(斜体em、空格nbsp、段落p、标题h1、换行br、大于号gt、小于号lt、引号quot、版权符号copy、图片img、水平线hr)
  10. 网络工程师 第1章 计算机网络概述
  11. 中文期刊分类(blog版)
  12. 【干货】实例讲解:跨部门沟通和与领导沟通的心得与技巧
  13. 深圳赏给我的耳光:说到底,生活就是一场接着一场的较量
  14. 有道词典java下载手机版下载手机版_有道词典app下载_有道词典在线翻译下载安装手机版v9.08...
  15. SAP ABAP ALV控制显示的网格中的每一个字段属性
  16. java去除html代码中含有的html、js、css标签,获取文字内容
  17. 「镁客·请讲」YOYOW白菜:区块链泡沫是个好东西,希望持续两三年
  18. 再也不乱打补丁,乱装杀毒软件了!!!
  19. 关于linux安装kettle的总结
  20. SVPWM与SYPWM谐波注入脉宽调制实现与对比

热门文章

  1. 编译最新版webrtc源码和编译好的整个项目10多个G【分享】
  2. 常见消息部件(Common Message Components)
  3. android native c++ 打印调用栈
  4. Android StrictMode类使用实例
  5. LeetCode入门题 两数之和
  6. xenserver 虚拟机扩容lvm磁盘分区的方法_vm虚拟机中linux Centos7.4硬盘扩容
  7. hive 窗口函数 应用场景与实战详解
  8. 考研 英语一 大作文-图画作文 (二)---第二段写作攻略
  9. oracle 输出入参怎么抛异常,oracle 存储过程入参 pids , varchar2 类型,where in 条件 会抛异常...
  10. JAVA ajax搜索框_JAVAEE AJAX实现搜素框关键字提示语功能