正则表达式

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

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. PAT天梯赛 L2-026. 小字辈 【BFS】

    题目链接 https://www.patest.cn/contests/gplt/L2-026 思路 用一个二维vector 来保存 每个人的子女 然后用BFS 广搜下去,当目前的状态 是搜完的时候 ...

  2. office web apps 整合到自己项目中(wopi实现在线预览编辑)

    借助office web apps实现在线预览和在线编辑 我所有的代码都是用go语言编写,你可以直接编译后使用,不用再有其他的操作. 最近项目实在太忙,这几天才有时间,这次是重头戏,要好好琢磨一下怎么 ...

  3. iOS中版本号的获取及其意义

    //对应的是发布的版本号,也就是build #define APP_VERSION [[[NSBundle mainBundle] infoDictionary] objectForKey:@&quo ...

  4. RobotFramework教程使用笔记——RobotFramework的安装配置

    (一)  Python的安装和pip配置 首先,从Python的官方网站 www.python.org http://www.python.org/ftp/python 然后,运行下载的MSI安装包, ...

  5. sqlserver锁表查看

    sp_lock--查询哪个进程锁表了,spid:进程ID,ObjId:对象ID EXEC sp_executesql N'KILL [spid]'--杀进程 select object_name([O ...

  6. servlet理论学习

    servlet是和凭条无关的服务器端的组件,它运行在servlet容器中,servlet容器负责servlet和客户的通信以及调用servlet方法.servlet和客户的通信是采用“请求和响应的模式 ...

  7. RightScale发布2017年度云调查报告

    RightScale最近发布了他们的年度云报告(RightScale 2017云现状报告,RightScale 2017 State of the Cloud Report),这份报告包括了云计算在采 ...

  8. java 基于百度地图API GPS经纬度解析地址

    首先这是百度地图api 的接口地址,基于接口的参数,不过多介绍,其中都提供相应的介绍: http://lbsyun.baidu.com/index.php?title=webapi/guide/web ...

  9. Opencv— — Circle Filter

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  10. nginx开发_ngx_http_script源码解析

    功能简介 nginx中有很多配置项支持以变量的形式存在,在运行时根据实时值进行处理.例如如下配置: location / { sub_filter '<a href="http://1 ...