# 正则表达式是用来匹配字符串的方法
# 字符串本身就有匹配方式,为什么要引入正则表达式? 因为原有的字符串匹配不出来原始的方法
# 正则匹配是用来进行模糊匹配的 s = "alex want to drink"
print(s.split(" ")) # 以恐吓
print(s.find("a")) # -1 import re
# 。 模糊匹配一个字符或者数字或者空格,但是不能匹配换行符号
# ^ 行首匹配
# $ 结尾匹配
# * 匹配前面0到多个字符 注意:0也是一个 0就是没有也会返回一个空字符
# + 匹配前面1到多个字符
# ? 匹配前面0到1次的字符 前面的字符可能没有,或只有一个
# {} 指定匹配的次数范围 {5}或者{1,5}前面的字符匹配5次 'aaaaaab' 这样的字符也是可以取到的
# (默认是贪婪匹配 ,按照最多的来,或者按照最少的来) # findall() 方法 完全匹配hello 返回列表
pp = re.findall("h...o","asdadasdashelloasdasdasd")
pp2 = re.findall("^h...o","asdadasdashelloasdasdasd") #匹配不成功
pp3 = re.findall("h*","asdashehllohhhhhhasdas") #匹配不成功 ['', '', '', '', '', 'h', '', 'h', '', '', '', 'hhhhhh', '', '', '', '', '', '']
print(pp3)
 import re
#二元字符
# [ ] 字符集 匹配给定范围的一个元素 里面是或的关系
# [ ] 取消元字符的特殊功能 比如* 就就被当成了普通字符 x 而不匹配多个字符了 但是 ^ \ - 这些字符例外!
# [^ ] ^在[ ]中是取反的意思!
# [^4,5] 这里的意思是除了4或和除了5的
# \ 后面跟元字符会取消其特殊功能,但是后面跟着普通的个别字符可以实现特殊功能 \w 表示一个字母
# 如下所示:
# \d 匹配任何十进制数;它相当于类 [0-9]。
# \D 匹配任何非数字字符;它相当于类 [^0-9]。
# \s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
# \S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
# \w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
# \W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
# \b 匹配一个特殊字符边界,比如空格 ,&,#等
# \\ 特殊字符 正则表达方式中的转义符号\\ 会经过python的解释器,那么python解释器需要再解释一遍就是\\\\变成4个字符 # () 括号内的规则作为一个整体去匹配的
# | 管道符号 或 的意思 #方法二: x=re.search() 找到一个就返回,返回的是个对象 获取这个对象的值的话 f.group() 获取找到的值 a=re.findall('a[b,v]c','abc')
a=re.findall('[a,z]','abc') # 这样子会返回3个结果 分别是a b c
print(a)
c = re.findall(r"I\b","hello,I am hero I am OK") # 注意转义符号
print(c) # \\ 转移符号的使用 要理解一下,因为 正则表达式里面转义后需要经过python解释器再转义一遍
# 方式一:
n = re.search(r'\\c','asdasd\cf')
print(n.group())
# 方式二:
v = re.search('\\\\c','asdasd\cf')
print(v.group()) #()与| 的方式使用
#()与| 的方式使用 升级版 复杂版 见下面示例 正则与根据组名取值
print(re.search("(as)|3","as3").group()) #as 注意 只有一个值
# 高级版
# <> 是正则表达式中的固定格式
ret=re.search('(?P<id>\d{2})/(?P<name>\w{3})','23/com')
print(ret.group())#23/com
print(ret.group('id'))#
 # 正则表达式的方法

 re.findall()
re.search().group()
re.match() #只在字符串开始匹配 匹配成功返回一个对象,匹配不成功返回none 也只返回一个对象
re.split() #重点在这里 如意犯错误
re.sub() #相当于replace替换 很好用的方法
re.compile() #将规则编译成一个对象去调用,节省代码的使用量 # 这个先按照k进行分组,然后在按照s对k的分组再次进行分组 ['a', 'd', 'dl', 'op']
print(re.split('[k,s]','asdkdlsop'))
# 注意容易犯错的地方 s 在分割的开头的话会有个空字符被分割出来
print(re.split('[k,s]','sasdkdlsop'))
print(re.sub('a..x','s..b','asdalexppm')) #asds..bppm #re.compile() 的使用 pp=re.compile('/.com')
ret=pp.findall('asdadd.com')
print(ret)
 import re
#迭代器对象
ret = re.finditer("\d","asdasda2adsd")
#print(next(ret))
print(next(ret).group())

python模块之re模块的更多相关文章

  1. Python(五)模块

    本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...

  2. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  3. Python模块之常用模块,反射以及正则表达式

    常用模块  1. OS模块 用于提供系统级别的操作,系统目录,文件,路径,环境变量等 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("di ...

  4. [转载]python中的sys模块(二)

    #!/usr/bin/python # Filename: using_sys.py import sys print 'The command line arguments are:' for i ...

  5. [转载]Python中的sys模块

    #!/usr/bin/python # Filename: cat.py import sys def readfile(filename): '''Print a file to the stand ...

  6. Python安装包或模块的多种方式汇总

    windows下安装python第三方包.模块汇总如下(部分方式同样适用于其他平台): 1. windows下最常见的*.exe,*msi文件,直接运行安装即可: 2. 安装easy_install, ...

  7. Python 五个常用模块资料 os sys time re built-in

    1.os模块   os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果.   os.name:返回当前操作系统名称('posix', 'nt', ' ...

  8. python基础知识9——模块2——常见内置模块

    内置模块 内置模块是Python自带的功能,在使用内置模块相应的功能时,需要[先导入]再[使用] 1.sys 用于提供对Python解释器相关的操作: sys.argv 命令行参数List,第一个元素 ...

  9. python基础知识8——模块1——自定义模块和第三方开源模块

    模块的认识 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需 ...

  10. Python 第五天 模块(2)

    模块,用一砣代码实现了某个功能的代码集合. 有两种存在的方式 1.写到一个文件夹里面 2.py文件 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和 ...

随机推荐

  1. GIT初始学习记录

    目录 GIT学习记录 配置github与gitlib两个账号 基本操作 git init:初始化仓库 git status:查看仓库状态 git add :向缓存区中添加文件 git commit 保 ...

  2. 分布式文档存储数据库 MongoDB

    MongoDB 详细介绍 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以 ...

  3. rhel配置网络yum源

    redhat 7.2配置网易yum源 卸载原来的yum源和安装必须的rpm包 1)确保虚拟机能够连接外网 2)前往http://mirrors.163.com/centos/7/os/x86_64/P ...

  4. Hadoop错误之namenode宕机的数据恢复

    情景再现: 在修复hadoop集群某一个datanode无法启动的问题时,搜到有一个答案说要删除hdfs-site.xml中dfs.data.dir属性所配置的目录,再重新单独启动该datanode即 ...

  5. cadence单一原理图库的设计

  6. hdfs 路径不支持‘:’

    hdfs 路径不支持‘:’,但Linux支持. -put: Pathname /public/platform/control_center/file_center/weiflow/core-user ...

  7. checkbox 用css改变默认的样式

    <!--html--> <label class="bl_input_checkbox click_checkbox" che_data="10&quo ...

  8. Linux命令 at cron

    at: 可以处理仅执行一次就结束排程的指令.需要atd服务 crontab: 所设定的指令将会循环地一直进行下去.需要crontab服务 at: Ubuntu16.04 默认没有安装atd服务.安装命 ...

  9. mysql5.7采坑

    2018年8月21日16:57:16 datetime 类型新默认值不能全部为 0000-00-00 00:00:00date也是新默认值直接date('Y-m-d H:i:s','0');datet ...

  10. 20175320 2018-2019-2 《Java程序设计》第8周学习总结

    20175320 2018-2019-2 <Java程序设计>第8周学习总结 教材学习内容总结 本周学习了教材的第十五章的内容,在这章中介绍了泛型和集合框架,着重讲了泛型类的概念,并介绍了 ...