正则表达式

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

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. Dockerfile指令:

    Dockerfile指令: 第一行注释,指令是大写字母开头, FROM指令: FROM<image>,后面跟镜像名, FROM<image>:<tag>,后面跟镜像 ...

  2. [bzoj1002] [FJOI2007]轮状病毒轮状病毒(基尔霍夫矩阵)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...

  3. [noip2014day1-T3]飞扬的小鸟

    Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. ...

  4. win7 64位系统与Ubuntu14.04 64位系统双系统安装【转】

    本文转载自:http://blog.csdn.net/strugglepeach/article/details/51260886 Window 7 + Ubuntu 双系统安装   硬件: Thin ...

  5. "makefile:5: *** missing separator. Stop."【转】

    本文转载自:http://blog.csdn.net/fireroll/article/details/8607903 写makefile时出现这个错误提示 是表示makefile中的命令前没有使用T ...

  6. Codeforces Beta Round #7 D. Palindrome Degree —— 字符串哈希

    题目链接:http://codeforces.com/contest/7/problem/D D. Palindrome Degree time limit per test 1 second mem ...

  7. JSR 303 - Bean Validation 是什么?

    关于 Bean Validation JSR 303 - Bean Validation 是jree6 中的一项子规范,JSR 303 - Bean Validation着重解决以下实际问题: 在任何 ...

  8. Notepad++安装xml插件

    环境: win7 64位 Notepad++7.3.3 原生的Notepad++不自带xml文件的插件,所以在显示xml文件时并不分行(如下图所示),对于用户编辑,查看的操作而言,并不友好,所以需要安 ...

  9. css font-family(字体样式)

    之前因为用的很少,所以没注意,最近做APP混合开发, 给字体一个样式    font-family:" 微软雅黑": 发现在有的手机上有效,但是在有的手机上是无效的, 解决方法:  ...

  10. 洛谷 2668&2540 斗地主——搜索+贪心+dp

    题目:https://www.luogu.org/problemnew/show/P2540 发现如果没有顺子,剩下的可以贪心.所以搜索顺子怎么出,然后贪心. 这样只能过不加强版.原因是贪心的时候难以 ...