# 正则表达式是用来匹配字符串的方法
# 字符串本身就有匹配方式,为什么要引入正则表达式? 因为原有的字符串匹配不出来原始的方法
# 正则匹配是用来进行模糊匹配的 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. Oracle做insert或者update时未提交事务导致表锁定解决办法

    //查看被锁定表有几个 select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$sessi ...

  2. [深度学习入门]batch_size的意义

    转自->https://www.zhihu.com/question/32673260

  3. Java HotSpot(TM) 64-Bit Server VM warning

    Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000007e4200000, 467140608, 0) ...

  4. JS编码方式

    1. escape(): 采用unicode字符集对指定的字符串除0-255以外进行编码.所有的空格符.标点符号.特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符 ...

  5. Django中的Form表单验证

    回忆一下Form表单验证的逻辑: 前端有若干个input输入框,将用户输入内容,以字典传递给后端. 后端预先存在一个Form表单验证的基类,封装了一个检测用户输入是否全部通过的方法.该方法会先定义好错 ...

  6. ECMA Script 6_数值的扩展

    1. 二进制 和 八进制 新的表示法 前缀 0b(或0B) 表示 二进制 前缀 0o(或 0O )表示 八进制 console.log(0b111110111 === 503); // true co ...

  7. springmvc 学习资料

    https://github.com/brianway/springmvc-mybatis-learninghttps://www.bilibili.com/video/av18288362?from ...

  8. idea创建的java web项目打包发布到tomcat

    File-> Project Structure... 点击Artifacts->+号 点击Web Application:Archive->选择与你的项目对应的那一项Artifac ...

  9. iview menu组件手动收起与展开

    本文主要介绍menu组件在有子菜单时如何手动的展开与收起. 展开: 在需要展开的地方先设置openname变量如this.openname = ["设置"]; 再在$nextTic ...

  10. Linux命令 df du

    df: 列出文件系统的整体磁盘使用量 du: 评估文件系统的磁盘使用量 $ df [-ahikHTm] [目录或文件名] 参数: -a: 列出所有的文件系统,包括系统特有的/proc 等文件系统 -k ...