正则表达式

1. 正则表达式

re模块:re模块本身只是用来操作正则表达式的,和正则本身没关系。

正则表达式:是一种规则 匹配字符串的规则。

为什么要有正则表达式?

  • 1.匹配字符串

    - 一个人的电话号码
    - 一个人的身份证号
    - 一台机器的ip地址
  • 2.表单验证

    - 验证用户输入的信息是否准确
    11位 全数字 1开头 第二个数3-9之内的数
    - 银行卡号
  • 3.爬虫

    从网页源码中获取一些链接、重要数据

正则规则(元字符,量词):

第一条规则 : 本身是哪一个字符,就匹配字符串中的哪一个字符。

第二条规则 : 字符组[字符1字符2],一个字符组就代表匹配一个字符,只要这个字符出现在字符组里,那么就说明这个字

​ 符能匹配上

  • 字符组中还可以使用范围

    所有的范围都必须遵循ascii码从下到大来指定。如:[0-9] [a-z] [A-Z]

2. 元字符

    1. \d(digit) \w(word) \s(space) \t(table) \n(next)

      [0-9] \d 表示所有的数字

      • d --> d
      • \d --> \是转义符,转义符转义了d,让d能够匹配所有0-9之间的数
      • [\d] [0-9] \d 没有区别 都是要匹配一位数字

      \w 表示 大小写字母、数字、下划线

      \s 表示空白、空格、换行符、制表符

      \t 匹配制表符

      \n 匹配换行符

    2. \D \W \S

      \D 表示所有的非数字

      \W 表示除数字、字母、下划线之外的所有字符

      \S 表示非空白

      [\d\D] [\W\w] [\S\s] 匹配所有一切字符

    3. . 表示除了换行符之外的任意内容

      \ . 在.前加一个 转义符。表示取消.的意义。

    4. [] [^]

      [] 字符组 :只要在中括号内的所有字符都是符合规则的字符

      [^ ]非字符组 :只要在中括号内的所有字符都是不符合规则的字符

    5. ^ $

      ^ 表示一个字符的开始

      ^a
      abc abc abc # 表示要匹配开始的a

      $ 表示一个字符的结束

      c$
      abc abc abc # 表示要匹配结束的c

      ^ $ 两个同时存在时,他俩之间的正则规定长度必须和要匹配的内容长度一致。

    6. | ()

      | 表示或,注意:如果两个规则有重叠部分,总是长的在前面,短的在后面

      () 表示分组,给一部分正则规定为一组,| 这个符号的作用域就可以缩小了

3. 量词

{n} 表示只能出现n次

{n,m}表示至少出现n次,至多出现m次

? 表示匹配0次或1次 表示可有可无 但是有只能有一个 比如小数点

. 表示匹配1次或多次

*表示匹配0次或多次 表示可有可无 但是有可以有多个 比如小数点后n位

什么时候会用到匹配0次?

1.匹配任意的2位整数   \d{2}
2.匹配任意的保留两位小数的数字 \d\.\d{2}
3.匹配一个整数或者小数 \d+\.\d+|\d+ \d+\.?\d* \d+(\.\d+)?

4. 贪婪匹配

正则表达式默认贪婪匹配,总是会在符合量词条件的范围内尽量多匹配。

正则表达式遵循了回溯算法,回溯算法导致了贪婪匹配。

\d{7,12}

adljdkjsljdlj

非贪婪匹配 (惰性匹配):总是匹配符合条件范围内尽量小的字符串。

元字符 量词 ,在量词后面加一个?,表示去最少的匹配

元字符 量词 ? x :表示按照元字符规则在量词范围内匹配,一旦遇到x就停止

.*?x 匹配任意的内容任意多次遇到x就立即停止

(\d+?x .*?x )非贪婪匹配在爬虫中会常用

# 身份证号
# 15位 全数字 首位不为0
# 18位 前17位全数字 首位不为0 最后一位可能是x和数字
[1-9](\d{16}(\d|x)|\d{14})
[1-9](\d{16}[\dx]|\d{14})
[1-9]\d{14}(\d{2}[\dx])?

python day25 正则表达式的更多相关文章

  1. [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

    [python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...

  2. Python 进阶 - 正则表达式

    1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...

  3. python study - 正则表达式

    第 7 章 正则表达式 7.1. 概览 7.2. 个案研究:街道地址 7.3. 个案研究:罗马字母 7.3.1. 校验千位数 7.3.2. 校验百位数 7.4. 使用 {n,m} 语法 7.4.1. ...

  4. python使用正则表达式文本替换

    2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不管是win/linux/mac都有一个简单的运行环境 举两个应用场景: 如果不是在某个文件 ...

  5. python的正则表达式 re

    python的正则表达式 re 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一 ...

  6. Python之正则表达式(re模块)

    本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 正则表达式(Regluar Expressions)又称规则 ...

  7. Python:正则表达式详解

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  8. 【Python】正则表达式纯代码极简教程

    <Python3正则表达式>文字版详细教程链接:https://www.cnblogs.com/leejack/p/9189796.html ''' 内容:Python3正则表达式 日期: ...

  9. 【Python】正则表达式简单教程

    说明:本文主要是根据廖雪峰网站的正则表达式教程学习,并根据需要做了少许修改,此处记录下来以备后续查看. <Python正则表达式纯代码极简教程>链接:https://www.cnblogs ...

随机推荐

  1. Zookeeper客户端 CuratorFramework使用

    CuratorFramework使用 跟着实例学习ZooKeeper的用法: Curator框架应用 ZooKeeper客户端Curator使用一 创建连接

  2. win2008以上的系统,在vmware esxi5.5里怎么使用自定义规范管理器?sysprep

    经过测试,原来08以上的系统自带了sysprep.exe,所以vcenter对08以上的系统直接使用自定义规范管理器即可,跟linux一样了.注意不要跟03一样写入了sn即可. vCenter可使用s ...

  3. html页面转换成pdf

    一般页面都是.jsp页面,所以要把.jsp转换成html,在生成pdf,在网上找了好多方法,只有用一个插件,wkhtmltopdf-0.8.3.exe,生成的pdf会相对的好看. 先附上我做的.jsp ...

  4. 517. Super Washing Machines

    ▶ 超级洗碗机.给定一个有 n 元素的整数数组,我们把 “将指定位置上元素的值减 1,同时其左侧或者右侧相邻元素的值加 1” 称为一次操作,每个回合内,可以选定任意 1 至 n 个位置进行独立的操作, ...

  5. java中回调函数的使用

    package com.huawei.common; import java.sql.ResultSet;import java.sql.SQLException; /** * 回调函数 * @aut ...

  6. Redis 集群二

    [Redis 集群二] 集群的客户端 Redis 集群现阶段的一个问题是客户端实现很少. 以下是一些我知道的实现: redis-rb-cluster 是我(@antirez)编写的 Ruby 实现, ...

  7. Shder中实现TintColor

    [Shder中实现TintColor] TintColor实现上相当于一个滤镜,若TintColor的R为0,则原图的R通道颜色应该为0.基于此,实现TintColor很容易,原图颜色直接乘以Tint ...

  8. TASK FLOW中的REENTRY

    在实际应用中,用户可能会点击浏览器的回退按钮回到上一页面,在有些情况下会导致一些问题. ADF Bounded TaskFlow有一个选项(UnBounded TaskFlow无此选项)可以设置是否允 ...

  9. Efficient algorithms for polyploid haplotype phasing 多倍体单体型分型的有效算法

    背景:单倍型的推断,或沿着相同染色体的等位基因序列,是遗传学中的基本问题,并且是许多分析的关键组分,包括混合物图谱,通过下降和插补识别身份区域. 基于测序读数的单倍型定相引起了很多关注. 已经广泛研究 ...

  10. QTcpSocket-Qt使用Tcp通讯实现服务端和客户端

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QTcpSocket-Qt使用Tcp通讯实现服务端和客户端     本文地址:https:// ...