一、正则表达式匹配IP地址

1、search()方法:用于在字符串中搜索正则表达式模式第一次出现的位置

>>> import re
>>> re.search(r'chen','I love chenfeng')
<re.Match object; span=(, ), match='chen'>
>>> '''
|-- span(,):chen 下标在7到11的位置出现
'''

2、正则表达式中的“.”表示除了换行符中的所有字符 即:通配符

>>> re.search(r'.','I love chenfeng!')
<re.Match object; span=(, ), match='I'> >>> re.search(r'chen.','I love chen.feng.com')
<re.Match object; span=(7, 12), match='chen.'

3、匹配点号如何做处理呢,只需要在点号前面加上反斜杠“\”,这时候点号不代表任何字符,只代表点号自己

>>> re.search(r'\.','I love chen.feng.com!')
<re.Match object; span=(, ), match='.'>

4、匹配数字:反斜杠+d   :  " \d  "

>>> re.search(r'\d','I love 123chenfeng.com!')
<re.Match object; span=(, ), match=''>
>>> re.search(r'\d\d\d','I love 123chenfeng.com!')
<re.Match object; span=(, ), match=''>
>>>

5、匹配IP地址

>>> re.search(r'\d\d\d\.\d\d\d.\d\d\d.\d\d\d','192.168.111.123')
<re.Match object; span=(, ), match='192.168.111.123'>
>>>
这样匹配的问题是:
1、d匹配的数字范围是0~9,而IP的最大范围是255
2、这里要求每一组的IP地址必须是三个数字,如果遇到192.168.1.1这样的IP地址就没办法匹配成功 改进的方法:
1>、用中括号" [] "创建字符类
举例匹配 I love chenfeng.com  字符串中的l
>>> re.search(r'[a-z]','I love 123chenfeng.com!')
<re.Match object; span=(2, 3), match='l'>

举例匹配“I love 123chenfeng.com ” 字符串中的1
>>> re.search(r'[0-9]','I love 123chenfeng.com!')
<re.Match object; span=(7, 8), match=''>
>>>

2>、限定重复匹配的次数 可以用大括号:{}

>>> re.search(r'ab{3}c','abbbc')
<re.Match object; span=(0, 5), match='abbbc'>
>>> re.search(r'ab{3}c','abbbbbbc')
匹配不了的可以用范围进行匹配
>>> re.search(r'ab{0,9}c','abbbbbbc')
<re.Match object; span=(0, 8), match='abbbbbbc'>
>>>

3、匹配0~255的数字

>>> re.search(r'[01]\d\d|2[0-4]\d|25[0-5]','')
<re.Match object; span=(0, 3), match=''>
>>> “[01]\d\d|2[0-4]\d” 中的“|”是“或”的含义,或者[01]\d\d成立,或者2[0-4]\d成立,或者25[05]成立,其中任何一个成立都是可以的
[01]\d\d : 百位数字是0或者1的话,十位和各位可以是任何数字
2[0-4]\d :百位是2,十位是0~5,则各位可以是任何数字
25[05] :百位是2,十位是5,则各位只能是0~5的数字

4、匹配IP地址

>>> re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[05])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[05])','191.168.1.1')
<re.Match object; span=(0, 11), match='191.168.1.1'>
>>>
 

【Python57--正则1】的更多相关文章

  1. Javascript正则对象方法与字符串正则方法总结

    正则对象 var reg = new Regexp('abc','gi') var reg = /abc/ig 正则方法 test方法(测试某个字符串是否匹配) var str = 'abc123'; ...

  2. C#-正则,常用几种数据解析-端午快乐

    在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...

  3. Javascript 中 with 的替代方案和String 中的正则方法

    这几天在升级自己的MVVM 框架,遇到很多小问题,就在这里统一解决了. with 语法 在代码中,要执行这么一个函数 function computeExpression(exp, scope) { ...

  4. JavaScript与PHP中正则

    一.JavaScript 有个在线调试正则的工具,点击查看工具.下面的所有示例代码,都可以在codepen上查看到. 1.创建正则表达式 var re = /ab+c/; //方式一 正则表达式字面量 ...

  5. Java正则速成秘籍(一)之招式篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  6. Java正则速成秘籍(二)之心法篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  7. Java正则速成秘籍(三)之见招拆招篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  8. python浅谈正则的常用方法

    python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...

  9. [Python基础知识]正则

    import re str4 = r"^http://qy.chinahr.com/cvm/preview\?cvid=\w{24,25}&from=sou&gtid=\w{ ...

  10. iOS中使用正则

    一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

随机推荐

  1. Window.sessionStorage - Web API 接口参考 | MDN

    参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/sessionStorage sessionStorage 属性允许你访问一个 s ...

  2. Sql之left join(左关联)、right join(右关联)、inner join(自关联)的区别

    参考:https://blog.csdn.net/hj7jay/article/details/51749863

  3. mybatis3 前台传数组 的处理

    /** * 分页按条件查询权限列表 * @param keywords * @return */ @RequestMapping(value = "/getByCondition2" ...

  4. Oil Deposits HDU 1241

    The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSu ...

  5. java三大工厂结果总览

    2018-11-02 21:27:18 开始写 谢谢.Thank you.Salamat Do(撒拉玛特朵).あリがCám o*n(嘉蒙)とゥ(阿里嘎都).감사합니다 (勘三哈咪瘩).terima K ...

  6. SVM支撑向量机原理

    转自:http://blog.csdn.net/v_july_v/article/details/7624837 目录(?)[-] 支持向量机通俗导论理解SVM的三层境界 前言 第一层了解SVM 1分 ...

  7. 设计模式之Observer(观察者)(转)

    Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循 ...

  8. emmm

    #include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; st ...

  9. mysql命令(三)

    创建一个名字为Student库: create database Student; 用以下地命令来查看创建的数据库是否成功: show databases; 进入数据库: use Student; 用 ...

  10. Linux 查看端口使用情况

    之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下: 1.netstat  -anp  |grep   端口号 如下,我以3306为例,netstat  -anp  |grep   ...