re模块用于对python的正则表达式的操作。

字符:

  . 匹配除换行符以外的任意字符
  \w 匹配字母或数字或下划线或汉字
  \s 匹配任意的空白符
  \d 匹配数字
  \b 匹配单词的开始或结束
  ^ 匹配字符串的开始
  $ 匹配字符串的结束

次数:

   * 重复零次或更多次
  + 重复一次或更多次
  ? 重复零次或一次
  {n} 重复n次
  {n,} 重复n次或更多次
  {n,m} 重复n到m次

一、普通字符:

.     通配符一个.只匹配一个字符

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("a..d","avsdcabcd")) 结果:
['abcd']
['avsd', 'abcd']

^    以什么开头

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("^avd","avddddcaavddbcd")) 结果:
['abcd']
['avd']

$  以什么结尾

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd$","avddddcaavddbcavd")) 结果:
['abcd']
['avd']

*  代表匹配*前面的字符 重复0到无穷次

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd*","avddddcaavddbcavavd")) 结果:
['abcd']
['avdddd', 'avdd', 'av', 'avd']

+  代表匹配+前面的字符 重复1到无穷次

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd+","avddddcaavddbcavavd")) 结果:
['abcd']
['avdddd', 'avdd', 'avd']

*和+属于贪婪匹配

? 代表匹配?前面的字符的0次或者是1次

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd?","avddddcaavddbcavavd")) 结果:
['abcd']
['avd', 'avd', 'av', 'avd'] 

{}可以指定重复几次

{0,} 代表重复{}前面字符的0到无穷次,相当于*

{1,} 代表重复{}前面字符的1到无穷次,相当于+

{0,1}代表重复{}前面字符的0到1次,相当于?

{6}代表重复{}前面字符的6次

{1,3}代表重复{}前面字符的1次到3次

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd{3}","avddddcaavddbcavavd")) print(re.findall("avd{3}","avddddcaavddbcavavd"))
print(re.findall("avd{2,4}","avddddcaavddbcavavd"))
print(re.findall("avd{0}","avddddcaavddbcavavd"))
print(re.findall("avd{7}","avddddcaavddbcavavd")) 结果:
['abcd']
['avddd']
['avddd']
['avdddd', 'avdd']
['av', 'av', 'av', 'av']
[]

惰性匹配*?  只要匹配出*前面的字符的0次就不匹配了

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd*?","avddddcaavddbcavavd")) 结果:
['abcd']
['av', 'av', 'av', 'av']

惰性匹配+?  只要匹配出+前面的字符的1次就不匹配了

import re
print(re.findall("abcd","asdcabcd"))
print(re.findall("avd+?","avddddcaavddbcavavd")) 结果:
['abcd']
['avd', 'avd', 'avd']

二、字符集

1、或的功能

import re
print(re.findall("x[yz]","xyzzzxyzxssdzx"))
print(re.findall("x[yz]","xyzzzxzsdxzzy"))
print(re.findall("x[yz]p","xypzzzxzsdxzpzy")) 结果:
['xy', 'xy']
['xy', 'xz', 'xz']
['xyp', 'xzp']

2、[]中得特殊符号-  匹配字母

取小写字符

import re
print(re.findall("[a-z]","as32eer45ttt564")) 结果:
['a', 's', 'e', 'e', 'r', 't', 't', 't']

取大写字

import re
print(re.findall("[A-Z]","as32eADCrc45ttDWSDS564")) 结果:
['A', 'D', 'C', 'D', 'W', 'S', 'D', 'S']

取大小写字母

import re
print(re.findall("[a-zA-Z]","as32eADCrc45ttDWSDS564")) 结果:
['a', 's', 'e', 'A', 'D', 'C', 'r', 'c', 't', 't', 'D', 'W', 'S', 'D', 'S']

取DC后面跟一个字母 取ab后面跟0个或者1 个字母

import re
print(re.findall("DC[a-z]?","as32eADCrc45ttDCWSDS564")) 结果:
['DCr', 'DC']

3、[]里面的特殊符号^   是取反的意思

4、[]里面的特殊符号\    叫转义符  最牛的一个斜杠

\d   匹配任意十进制数,相当于[0-9]

\D   匹配任意非数字字符,相当于[^0-9]

\s   匹配任何空白字符

\S   匹配任何非空白字符

\w   匹配任何字符数字字符,相当于[a-zA-Z0-9_]

\W   匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]

\b   匹配一个特殊字符边界,比如空格 & # 等

未完待续。。。。。

day23 Pythonpython 本文re模块的更多相关文章

  1. day22 Pythonpython 本文xml模块

    一.xml介绍 xml是实现不同语言或者程序直接进行数据交换的协议,跟json差不多,单json使用起来更简单.不过现在还有很多传统公司的接口主要是xml xml跟html都是标签语言 我们主要学习的 ...

  2. day22 Pythonpython 本文json模块

    json模块 •应用场景: json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转化为json ...

  3. day22 Pythonpython 本文sys模块

    一.sys模块 用来提供对Python解释器相关的操作 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.versio ...

  4. day22 Pythonpython random随机模块:略!!!本文os模块

    OS模块 用于提供系统级别的操作: os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相 ...

  5. day23 正则,re模块

    一. 简谈正则表达式 元字符 . 除了换行符外任意字符. \w 数字.字母.下划线 \s 空白符 \b 单词的末尾 \d 数字 \n 匹配换行符 \t 匹配制表符 \W 除了数字. 字母 下划线 \D ...

  6. 转:OSGi 入门篇:模块层

    OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...

  7. 玩转X-CTR100 l STM32F4 l ESP8266串口WIFI模块

    我造轮子,你造车,创客一起造起来!更多塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]- ESP8266是一款非常火的WIFI模块,性价 ...

  8. ansible基本使用教程

    转载请注明出处http://www.cnblogs.com/chenxianpao/p/7360349.html 一. 介绍 1. 简介     ansible是新出现的自动化运维工具,基于Pytho ...

  9. Odoo(OpenERP)应用实践:代发货管理

    原文地址:http://blog.csdn.net/wangnan537/article/details/47091857 有些分销商,在买家下单后才向供应商采购产品,并由供应商直接发货给客户.这种模 ...

随机推荐

  1. IO学习一(File类)

    File类 1.凡是与输入.输出相关的类.接口都定义在java.io包下 2.File有构造器来创建对象,此对象对应着一个文件或文件目录 支持文件类型:.txt .avi .doc .jpg .ppt ...

  2. js 分页插件(jQuery)

    参考:http://www.jb51.net/article/117191.htm 侵删 css 部分 @charset "utf=8"; *{ box-sizing: borde ...

  3. 《JavaScript高级程序设计》笔记:JavaScript简介(一)

    javascript从一个简单的输入验证器发展成为一门强大的编程语言,完全出乎人们的意料. javascript实现一个完整的javascript实现应该由下列三个不同的部分组成:1:核心(ECMAS ...

  4. 通俗的理解java设计模式的准则

    本文部分内容摘抄自https://www.cnblogs.com/dolphin0520/p/3919839.html,加入了自己的理解: 一.单一职责原则 原文链接:http://blog.csdn ...

  5. Kotlin入门(26)数据库ManagedSQLiteOpenHelper

    共享参数毕竟只能存储简单的键值对数据,如果需要存取更复杂的关系型数据,就要用到数据库SQLite了.尽管SQLite只是手机上的轻量级数据库,但它麻雀虽小.五脏俱全,与Oracle一样存在数据库的创建 ...

  6. 深入理解Java虚拟机04--类结构文件

    一.程序存储格式 统一的程序存储格式:不同平台的虚拟机于所有平台都统一使用程序存储格式——字节码(ByteCode); Java 虚拟机不关心 Class 文件的来源,而只和“Class文件" ...

  7. 数据库之mysql篇(2)—— mysql常识引入/用户授权

    常识引入 1.概念: 数据库:本质上是一个文件夹 1)查看本机所有数据库:show databases; 结束符:分号[:],一切数据行的结尾都以分号作为结束 2)创建数据库:create  数据库名 ...

  8. adb错误处理

    C:\Users\****\source\****>adb connect 192.168.10.* adb server version () doesn't match this clien ...

  9. mysql 数据库安装

    一.Mysql的安装 1. 安装mysql-server服务端 版本5.7.19-0ubuntu0.16.04.1 目前可以下载的版本: 5.5 5.6 5.7 8.0 测试版 输入:(我这里不需要客 ...

  10. 【Git学习二】深入了解git checkout命令

    检出命令(git checkout)是Git最常用的命令之一,同时也是一个很危险的命令,因为这条命令会重写工作区.检出命令的用法如下: 用法一:git checkout[-q][<commit& ...