# 正则表达式是用来匹配字符串的方法
# 字符串本身就有匹配方式,为什么要引入正则表达式? 因为原有的字符串匹配不出来原始的方法
# 正则匹配是用来进行模糊匹配的 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. aspnet core运行后台任务

    之前在公司的一个项目中需要用到定时程序,当时使用的是aspnet core提供的IHostedService接口来实现后台定时程序,具体的示例可去官网查看.现在的dotnet core中默认封装了实现 ...

  2. 2019-2-20Sqlserver数据库中char、varchar、nchar、nvarchar的区别及查询表结构

    varchar 和 nvarchar区别: varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字 ...

  3. CSS文字溢出处理问题

    单行省略 div { white-space:nowrap; //断行处理:无断行 text-overflow:ellipsis; //文字溢出处理:省略号 overflow:hidden; //溢出 ...

  4. 图片懒加载、selenium和PhantomJS

    1.图片懒加载 1.1 概念及实现原理 图片懒加载是一种网页优化技术.图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完, 将大大增加页面的首屏加 ...

  5. day11_单元测试_读取yaml文件中的用例,自动获取多个yaml文件内容执行生成报告

    一.使用.yaml格式的文件直接可以存放字典类型数据,如下图,其中如果有-下一行有缩进代表这是个list,截图中是整体是一个list,其中有两部分,第二部分又包含另外一个list 二.单元测试:开发自 ...

  6. [LeetCode] Binary Tree Pruning 二叉树修剪

    We are given the head node root of a binary tree, where additionally every node's value is either a ...

  7. java知识库

    完善自己的成长之路,建立一套属于自己的系统知识体系,温故而知新. --HBX 1.java特性 2.java程序设计环境 3.java基本的设计结构 4.类与对象 参考资料:<java核心技术( ...

  8. Python练手例子(3)

    13.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因为153=1 ...

  9. CAJ转换成PDF在线方法是什么

    做学术性的朋友经常会需要将CAJ文件转换成PDF文件,毕竟CAJ文件只能在CAJ阅读器上显示,但是有很多转换软件并不能很好的完成转换,小编今天就为大家讲解一下CAJ转换成PDF在线方法是什么,大家要认 ...

  10. QQ机器人

    先说下整体思路1.首先要借助一个QQ 插件,用来接收消息 发送消息2.要用个QQ 小号,这个QQ 你不能用来登,因为他相当于那个机器人3.要借助大神开发的SDK ,就是别人写的底层交互 ,我们只需要关 ...