正则表达式

概念: 正则匹配就是一个模糊的匹配 只要符合我的匹配规则 就会认为是正确的数据(精确的匹配)

1.[]     #代表原子表把想要匹配的内容写入原子表中   匹配包含的任意一位字符
    [a]     #匹配小写字母a
    [ab]    #匹配小写字母a或者b
    [aAbB]  #匹配字母a或b
    [195]   #匹配任意一位数字
    [a-z]   #匹配任意一位小写字母
    
2.^    #在原子表外称之为以...作为开头   放在原子表内叫取反  相当于 \A
    ^[abc]  #匹配以a/b/c字符作为开头
    [^abc]  #匹配任意一位小写字母a/b/c以外的字符
    ^abc    #匹配以小写字母abc开头的内容
    ^[0-9]
    ^[a-zA-Z0-9]
3.$   #以...作为结尾  相当于 \Z
    ^[1][3-9][0-9]{9}$  ^和$通常是组合使用 真正的限制匹配数据的正确性
4.{m}  #控制匹配前面数量的m次  不能单独使用 和普通的内容一起使用或者和原子表
    #匹配3个a的操作
    [a][a][a]
    aaa
    a{3}
    [a]{3}
    {4}  #错误写法
    [a-zA-Z]{3}
5.{m,n}  #控制匹配前面数量的m-n次  不能单独使用 和普通的内容一起使用或者和原子表
    #匹配qq号码
    5-11
    ^[1-9][0-9]{4,10}$
    
    010-778192
    101-621331
    [01]{3}\-[0-9]{6}
 
6.{m,}   #表示匹配前面数量至少m次
    [a-z]{3,}
    #1 匹配1-99的正则
    [1-9][0-9]{0,1}
    #2 匹配任意一位正负整数和小数 ?
    [\-]{0,1}[1-9]
7.?   #可有可无  匹配前面的正则表达式的 0次或者一次  类似于 {0,1}  或指明一个非贪婪的限定符
    [1-9][0-9]?
    [\-]?[1-9]
8. .   #匹配换行符\n以外的任意一位字符
9. *   #匹配前面表达式的任意次 相等于{0,}
10. .*  #匹配除换行符以外的任意字符任意次  贪婪模式
11. .*?  #匹配除换行符以外的任意字符任意次   非贪婪模式
12.  +   #匹配前面表达式的至少1次 相等于{1,}
13. .+   #匹配除换行符以外的任意字符至少1次  贪婪模式
14. .+?   #匹配除换行符以外的任意字符至少次   非贪婪模式
15. ()    #1.代表一个单元   2.子存储
16. |  #表示或
#匹配手机号码或者qq号码
(^[1-9][0-9]{4,10}$)|(^[1][3-9][0-9]{9}$)
 

正则函数

使用正则函数需要导入内置的 re模块

import re

修正符

  1. re.I 忽略大小写

  2. re.M 多行模式 改变^和$的作用

  3. re.S 改变.的行为 可以匹配换行符

特殊意义的字符

\d 相当于 [0-9]

\D 相当于 [^0-9]

\w 相当于 [a-zA-Z0-9_]

\W 相当于[^a-zA-Z0-9_]

\s 匹配空白字符

\S 匹配非空白字符

(1) re.match(pattern,string,flags) 匹配一次 必须从头开始

pattern:正则表达式

string: 要匹配的字符串的内容

flags: 修正符

返回结果:

匹配成功 返回对象

匹配失败 返回None

注意:

match必须从第一位开始匹配 如果第一位没有符合的 则匹配失败 类似于在正则前方添加^
只匹配一次

取值

  1. group() 将值取出

    group([index]) 索引可有可无 如果正则内没有存在括号 则不需要传index

  2. groups() 正则内括号的值 以元组形式进行返回

(2) re.search(pattern,string,flags) 匹配一次包含就可以

pattern:正则表达式

string: 要匹配的字符串的内容

flags: 修正符

返回结果:

匹配成功 返回对象

匹配失败 返回None

只匹配一次

和match的区别 只要字符串中包含就可以

(3) re.findall(pattern,string,flags) 匹配多次

pattern:正则表达式

string: 要匹配的字符串的内容

flags: 修正符

返回结果:
匹配成功返回装有数据的列表
匹配失败返回空列表

(4) re.finditer() 将查询结果变成迭代器进行返回 配合next方法进行操作

next(re.finditer())

(5) re.sub/re.subn 正则替换 返回匹配的次数/不返回匹配的次数

sub(pattern, repl, string, count=0, flags=0)
subn(pattern, repl, string, count=0, flags=0)
 

(6) re.split 正则拆分

split(pattern, string, maxsplit=0, flags=0):
 

(7) re.compile(pattern,flags) 编译成正则表达式 可以多次使用

将正则和函数分开使用 提高执行效率 正则表达式 可以多次使用

使用方法

pattern = re.compile("pattern",flags)

pattern.函数名(匹配的字符串)

修正符

re.I(re.IGNORECASE)

re.S(re.DOTALL)

re.M(re.MULTILINE)

python 基础(十四) 正则表达式的更多相关文章

  1. python学习(十四)正则表达式

    原文链接 ## 什么是正则表达式`正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑 ...

  2. python基础十四之匿名函数

    匿名函数 处理简单问题的简化函数,关键字lambda. # 格式:函数名 = lambda 参数:返回值 anonymity = lambda s: s ** 0.5 print(anonymity( ...

  3. Python 基础语法(四)

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  4. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

  5. 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘

    孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...

  6. 孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式

    孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 在我学习过的所有语言中,对VB系的语言比较喜欢,而对C系和J系 ...

  7. Bootstrap<基础十四> 按钮下拉菜单

    使用 Bootstrap class 向按钮添加下拉菜单.如需向按钮添加下拉菜单,只需要简单地在在一个 .btn-group 中放置按钮和下拉菜单即可.也可以使用 <span class=&qu ...

  8. 初学 Python(十四)——生成器

    初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...

  9. Python第二十四天 binascii模块

    Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...

随机推荐

  1. ZOJ - 3953 Intervals 【贪心】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3953 题意 给出N个区间,求去掉某些区间,使得剩下的区间中,任何 ...

  2. vue axios拦截器介绍

    关于axios的拦截器是一个作用非常大,非常好用的东西.分为请求拦截器和响应拦截器两种.我一般把拦截器写在main.js里. 1. 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作,例如在每个请 ...

  3. ps 工具栏使用

    1:称动工具,快捷键是v,则选中移动工具:按shift和左键,可移动当前层移到另一层的中间对齐.如果不用sfhift键,则只是移动:alt+左键上移动,则复制层:alt+中间滚轮,则为放大和缩小. 2 ...

  4. nginx启动不了

    nginx简介 Nginx是一个高性能的HTTP和反向代理服务器. 支持的操作系统众多,windows.linux. MacOS X: 可实现负载均衡: Rewrite功能强大: 电商架构大部分都采用 ...

  5. 快速解决Android中的selinux权限问题【转】

    本文转载自:http://blog.csdn.net/mike8825/article/details/49428417 版权声明:本文为博主原创文章,未经博主允许不得转载. 关于selinux的详细 ...

  6. [Vim 使用]vim 自动括号补全配置

    打开Vim的配置文件,windows 上面的配置文件在vim 的安装目录下,_vimrc,使用记事本或vim打开 在下方加入如下代码 inoremap ( ()<ESC>i inorema ...

  7. C语言中的排序算法--冒泡排序,选择排序,希尔排序

    冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没 ...

  8. CISCO-从路由器上下载IOS

    准备工作:一台装有TFTP服务器的PC,一台带有IOS的路由器,并用网线连接上 设置路由器接口和计算机网卡的IP地址在同一网段,并且互相能ping通. 1,安装Cisco TFTP Server 2, ...

  9. C# 获取QQ好友列表信息的实现

    分析部分 当我们访问QQ空间的时候,大家可以在右侧的发现一个这样的统计信息  当点击这个链接的时候,会跳转到  这样一个URL 这个URl可以管理好友,当然也就能读取到好友  上面我们是在浏览器中的操 ...

  10. springboot中使用@Value读取配置文件

    一.配置文件配置 直接配置 在src/main/resources下添加配置文件application.properties 例如修改端口号 #端口号 server.port=8089 分环境配置 在 ...