# 1. 正则表达式
# 元字符
# . 除了换行符外任意字符
# \w 数字 字母 下划线
# \s 空白符
# \b 单词的末尾
# \d 数字
# \W 除了数字 字母 下划线
# \D 除了数字
# \S 除了空白符
# ^ 开头
# $ 结尾
# [] 匹配字符组中的字符
# [^] 除了字符组内的元素外

# 量词 限定符
# * {0,n} 零或者更多
# + {1,n} 一或更多
# ? {0,1} 零或一
# {p} p次
# {p,}   p次或更多次
# {p,q} 从p到q次
# .*   贪婪匹配 尽可能多的匹配到结果
# .+ # .*? 惰性匹配 是尽可能的少匹配.
# 分组 正则中使⽤()进⾏分组. 如.匹配⼀个相对复杂的⾝份证号
# ^[1-9]\d{14}(\d{2}[0-9x])?$
# ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$
# 转义
# 正则表达式中,有很多有特殊意义的是元字符,如\n和\s等,若要在正则中匹配正常的"\n"⽽不是"换⾏符"需要对"\"进⾏转义, 变成'\\'.
# 而在python中,都是字符串的形式出现,字符串中\也有特殊的含义,本身还需转义.所以匹配⼀次"\n",字符串中要写成'\\n',那么正则就要写成"\\\\n",
# 这样太麻烦.所以这时用r'\n'这个概念,此时的正则是r'\\n'就可以了.
# 如 r"www\.(baidu|google)\.com","www.google.com"
# \n 换行
# \\n \n
# \.
# \/
# \?
# 2. re模块
# findall() 获取到匹配的所有内容
# finditer() 匹配到所有内容。 返回迭代器
# search() 搜索。查到了就返回
# match() 匹配. 从头开始匹配
 # r"(?P<name>正则)"

 import re
res = re.search('e','leiyunse') # 搜索 搜到 一个 结果就返回
print(res.group()) # e res = re.match('\w+','wuwu is not good man') # match 从开头匹配 若匹配到了就返回
print(res.group()) # wuwu lst = re.findall('\w+','wusir and exo') # findall 查找所有 返回list
print(lst) # ['wusir', 'and', 'exo'] it = re.finditer("\w+","mai le fo leng") # 返回迭代器
for el in it:
print(el.group())
'''
mai
le
fo
leng
''' # 分组优先级
lst = re.findall(r"www\.(baidu|google)\.com","www.google.com") # ()最优先返回
print(lst) # ['google'] # (?:) 去掉优先级
lst = re.findall(r"www\.(?:baidu|google)\.com","www.google.com")
print(lst) # ['www.google.com'] # split 切割 若加括号()会保留切的
lst = re.split("([ab])","alex is not a sb,no he is a big sb")
print(lst) # sub 替换
res = re.sub(r"\d+","_sb_","alex111wusir222taibai666ritian999")
print(res) # alex_sb_wusir_sb_taibai_sb_ritian_sb_ # subn 替换 返回元组 带替换次数
res = re.subn(r"\d+","_sb_","alex111wusir222taibai666ritian999")
print(res) # re.compile() # 把正则表达式预加载
obj = re.compile(r"alex\d+and")
res = obj.search("alex222andwusir333taibai666ritian999")
print(res.group()) # alex222and
# 若数字单独拿出来
obj = re.compile(r"alex(?P<name>\d+)and")
res = obj.search("alex222andwusir333taibai666ritian999")
print(res.group()) # alex222and
print(res.group("name")) #





第二十三天- 模块 re的更多相关文章

  1. 《Linux命令行与shell脚本编程大全》 第二十三章 学习笔记

    第二十三章:使用数据库 MySQL数据库 MySQL客户端界面 mysql命令行参数 参数 描述 -A 禁用自动重新生成哈希表 -b 禁用 出错后的beep声 -B 不使用历史文件 -C 压缩客户端和 ...

  2. NeHe OpenGL教程 第二十三课:球面映射

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  3. javaSE第二十三天

    第二十三天    338 1.进程和线程的概述    338 2.多线程(理解)    339 (1)多线程:一个应用程序有多条执行路径    339 (2)Java程序的运行原理及JVM的启动是多线 ...

  4. Python开发【第二十三篇】:持续更新中...

    Python开发[第二十三篇]:持续更新中...

  5. Python第二十二天 stat模块 os.chmod方法 os.stat方法 pwd grp模块

    Python第二十二天   stat模块  os.chmod方法  os.stat方法  pwd  grp模块 stat模块描述了os.stat(filename)返回的文件属性列表中各值的意义,根据 ...

  6. Gradle 1.12用户指南翻译——第二十三章. Java 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  7. “全栈2019”Java多线程第二十三章:活锁(Livelock)详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  8. “全栈2019”Java第二十三章:流程控制语句中决策语句switch上篇

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. 孤荷凌寒自学python第二十三天python类的封装

    孤荷凌寒自学python第二十三天python类的封装 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.从怎么样访问类的内部代码块中定义的私有属性说起 类中定义的私有属性和私有方法是无法被 ...

随机推荐

  1. centOS 自动锁屏 解决办法

    System-->preferences --> Screensaver中 找到 Lock screen when screensaver is active 把前面的钩去掉

  2. php批量导出pdf文件的脚本(html-PDf)

    背景:突然有大量的文件需要导出成PDF文件,写一个批量导出pdf的脚本,同时文件的命名也需要有一定的规则 导出方式:向服务器中上传csv文件,csv文件中包含文件的地址和相对应的文件命名. 如下格式: ...

  3. [JavaScript] 时间戳格式化为yyyy-MM-dd日期

    function formateDate(timestamp){ var date = new Date(timestamp); var y = 1900+date.getYear(); var m ...

  4. [Swift实际操作]七、常见概念-(6)日期Date和DateFormatter日期的格式化

    本文将为你演示日期类型的使用,以及如何对日期进行格式化. 首先引入需要使用到的界面框架 import UIKit 初始化一个日期对象,它的值和当前电脑中的日期相同 var date = Date() ...

  5. day67 crm(4) stark组件的增删改 以及 model_from使用和from组件回顾

        前情提要:Django  stark 组件开发的 增删改,  model_form组件的使用 form组件的回顾 一:list_display_link  创建 功能描述:   使包含的字段能 ...

  6. laydata 点击日期闪现

    因项目需求需要多个日期,然后点击日期就会出现闪现的情况,导致选择不了日期 html代码 <table class="form"> <tr> <th c ...

  7. java命令行编译和运行引用jar包的文件

    经常遇到需要添加第三方jar文件的情况.在命令行状态下要加载外部的jar文件非常麻烦,很不好搞,在网上折腾了很久终于搞定了,在这里做个笔记: 2.运行:java -Djava.ext.dirs=./l ...

  8. Java之集合(二十七)其它集合

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7551368.html 1.前言 本章介绍剩余的3个集合类:ConcurrentSkipListSet.CopyO ...

  9. 第5章—构建Spring Web应用程序—关于spring中的validate注解后台校验的解析

    关于spring中的validate注解后台校验的解析 在后台开发过程中,对参数的校验成为开发环境不可缺少的一个环节.比如参数不能为null,email那么必须符合email的格式,如果手动进行if判 ...

  10. UBUNTU 安装中文语言包命令

    本次在UBUNTU安装国外程序,需要中文包 才会是中文. apt-get install language-pack-zh-hans 解决.