python--(常用模块-3-正则表达式)

  正则表达式是对字符串操作的⼀种逻辑公式. 我们⼀般使⽤正则表达式对字符串进⾏匹
  配和过滤. 使⽤正则的优缺点:
  优点: 灵活, 功能性强, 逻辑性强.
  缺点: 上手难. 一旦上手, 会爱上这个东西
  工具: 各文本编辑器一般都有正则匹配功能. 我们也可以去
  http://tool.chinaz.com/regex/进⾏在线测试

  正则表达式由普通字符和元字符组成. 普通字符包含大小写字母, 数字. 在匹配普通字符
  的时候我们直接写就可以了. 比如"abc" 匹配的就是"abc". 我们如果用python也可以实现相
  同的效果. 所以普通字符没什么好说的. 重点在元字符上.

  元字符: 元字符才是正则表达式的灵魂. 元字符中的内容太多了, 在这里我们只介绍一些
  常用的..

1.字符组

  字符组很简单用[]括起来,在[]中出现的内容会被匹配.例如;[abc]匹配a或b或c  

  如果字符组中的内容过多还可以使⽤- , 例如: [a-z] 匹配a到z之间的所有字⺟ [0-9]
匹配所有阿拉伯数字
  思考: [a-zA-Z0-9]匹配的是什么?
2. 简单元字符
  基本的元字符. 这个东西网上一大堆,下面是几个常用的

 .       匹配除换行符以外的任意字符
\w  匹配字母或数字或下划线
\s 匹配任意的空白字符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结束
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空字符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符

  3.量词

    我们到目前匹配的所有内容都是单一的文字符号,那如何一次性匹配很多个字符呢,

我们用到量词

 *       重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{nm} 重复n到m次

  4.惰性匹配和贪婪匹配

    在量词中的*, +,{} 都属于贪婪匹配. 就是尽可能多的匹配到结果

str: 麻花藤昨天让英雄联盟关服了 reg: 麻花藤.* 此时匹配的是整句话

  在使用.*后面如果加了?则是尽可能的少匹配.表示惰性匹配

 str: 麻花藤昨天让英雄联盟关服了
reg: 麻花藤.*?
此时匹配的是 麻花藤
str: <div>胡辣汤</div>
reg: <.*>
结果: <div>胡辣汤</div>
str: <div>胡辣汤</div>
reg: <.*?>
结果
<div>
</div>
str: <div>胡辣汤</div>
reg: <(div|/div*)?>
结果:
<div>
</div>

  ..*?x的特殊含义 找到下一个x为止.

str: abcdefgxhijklmn reg: .*?x 结果:abcdefgx

5.分组

    在正则中使⽤()进⾏分组. 比如. 我们要匹配⼀个相对复杂的⾝份证号. ⾝份证号分
成两种. 老的⾝份证号有15位. 新的⾝份证号有18位. 并且新的⾝份证号结尾有可能

 给出以下正则
^[1-9]\d{13,16}[0-9x]$ ^[1-9]\d{14}(\d{2}[0-9x])?$ ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$

6.转义

  在正则表达式中, 有很多有特殊意义的是元字符, ⽐如\n和\s等,如果要在正则中匹
配正常的"\n"⽽不是"换⾏符"就需要对"\"进⾏转义, 变成'\\'.在python中, ⽆论是正则表达式, 还
是待匹配的内容, 都是以字符串的形式出现的, 在字符串中\也有特殊的含义, 本身还需要转

义. 所以如果匹配一次"\n", 字符串中要写成'\\n', 那么正则⾥就要写成"\\\\n",这样就太麻烦了.
这个时候我们就⽤到了r'\n'这个概念, 此时的正则是r'\\n'就可以了

练习:
1. 匹配邮箱
2. 匹配手机号
3. 匹配生日.日期格式(yyyy-MM-dd)
4. 匹配电话号码
5. 匹配IP

  

python--(常用模块-3-正则表达式)的更多相关文章

  1. python常用模块二正则表达式

    正则表达式 常用的正则元字符 # =================================匹配模式================================= #一对一的匹配 # 'h ...

  2. python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

  3. Python常用模块大全

    Python常用模块大全 os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有文件 os.c ...

  4. Python常用模块小结

    目录 Python常用模块小结 一.Python常用模块小结 1.1 time模块 1.2 datetime模块 1.3 random模块 1.4 os模块 1.5 sys模块 1.6 json模块 ...

  5. Python常用模块之sys

    Python常用模块之sys sys模块提供了一系列有关Python运行环境的变量和函数. 常见用法 sys.argv 可以用sys.argv获取当前正在执行的命令行参数的参数列表(list). 变量 ...

  6. Python常用模块中常用内置函数的具体介绍

    Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...

  7. python——常用模块2

    python--常用模块2 1 logging模块 1.1 函数式简单配置 import logging logging.debug("debug message") loggin ...

  8. python——常用模块

    python--常用模块 1 什么是模块: 模块就是py文件 2 import time #导入时间模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的 ...

  9. Python常用模块——目录

    Python常用模块学习 Python模块和包 Python常用模块time & datetime &random 模块 Python常用模块os & sys & sh ...

  10. python 常用模块之random,os,sys 模块

    python 常用模块random,os,sys 模块 python全栈开发OS模块,Random模块,sys模块 OS模块 os模块是与操作系统交互的一个接口,常见的函数以及用法见一下代码: #OS ...

随机推荐

  1. join()与os.path.join()的用法

    join:连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 os.path.join():  将多个路径组合后返回 一.函数说明 1.join()函数 语法:‘ ...

  2. html5 过程解决问题收集

    1.使用画布时报错误: Uncaught TypeError: Object [object Object] has no method 'getContext' . 解决方法: $(function ...

  3. valueof这个万能方法,将string转换为int或者int转换为string都可以

    private static String testString = "111"; int stringInt = Integer.valueOf(testString); Str ...

  4. 具体解释Redis源代码中的部分高速排序算法(pqsort.c)

    看标题.你可能会疑惑:咦?你这家伙.怎么不解说完整的快排,仅仅讲一部分快排---.- 哎,冤枉. "部分快排"是算法的名字.实际上本文相当具体呢.本文差点儿与普通快排无异.看懂了本 ...

  5. NYOJ 145 聪明的小珂

    /* 题目大意:求解和输入数的互质的数 解题思路:求解和 n 互质的最大数.从n/2開始找 关键点:GCD函数的使用 解题人:lingnichong 解题时间:2014-10-04 16:11:55 ...

  6. Apache Pig的前世今生

    近期,散仙用了几周的Pig来处理分析我们站点搜索的日志数据,感觉用起来非常不错,今天就写篇笔记介绍下Pig的由来,除了搞大数据的人,可能非常少有人知道Pig是干啥的.包含一些是搞编程的,但不是搞大数据 ...

  7. 笔试题&amp;面试题:给定n个数,要求比較次数1.5n同一时候找出最大值和最小值

    写出一个算法,对给定的n个数的序列,返回序列中的最大和最小的数. 设计出一个算法,仅仅须要运行1.5n次比較就能找到序列中最大和最小的数吗?是否能再少? 分析:要求比較次数为1.5n,使用一般的逐个遍 ...

  8. SQL语法精讲(包括建库、建表、建视图、查询、增加、删除、)

    SQL语法精讲(包括建库.建表.建视图.查询.增加.删除.修改) SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELE ...

  9. When Cyber Security Meets Machine Learning 机器学习 安全分析 对于安全领域的总结很有用 看未来演进方向

    链接:http://ucys.ugr.es/jnic2016/docs/MachineLearning_LiorRokachJNIC2016.pdf https://people.eecs.berke ...

  10. 数据格式与数据类型(Content-Type)

    常见数据类型: 文本文件: 二进制文件: 编码后的图像文件: jpeg png 网络中爬取的数据: 1. Content-Type Media Types Type text text/css tex ...