# 正则表达式是用来匹配字符串的方法
# 字符串本身就有匹配方式,为什么要引入正则表达式? 因为原有的字符串匹配不出来原始的方法
# 正则匹配是用来进行模糊匹配的 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. Update修改方法判断该ID的数据是否超过24小时,超过不许修改

    @PostMapping("/update") public Result projectUpdate(@RequestBody ProjectVoEntity projectvo ...

  2. php代理

    有些网上接口请求需要用代理 php代码 <?php header('Access-Control-Allow-Origin:*'); $url=$_POST['urlString']; $res ...

  3. Linux-vi编辑器简单使用(保证存活)

    vi编辑器基本模式 命令行模式(command mode) 光标移动.复制粘贴.删除 插入模式(insert mode) 文字输入 底行模式(last line mode) 保存.退出 模式转换 co ...

  4. Auth模块、Forms组件

    Auth模块 auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这 ...

  5. react-native run-android时 SDK location not found.报错

    报错 原因 缺少local.properties文件(SDK location) 解决 方法一:在android Studio中打开项目android目录,会自动创建local.properties文 ...

  6. MVC 微信开发获取用户OpenID

    第一次开发微信版网页,对最重要的获取微信OpenId,特此记录下来 1.首先得有appid和appsecret . public class WeiXin { public static string ...

  7. __x__(31)0908第五天__导航条的练习 <ul> 版本

    效果图:  html代码: <!doctype html> <html> <head> <meta charset="utf-8" /&g ...

  8. (55)Wangdao.com第八天_JavaScript 字符串中使用 \u 输出Unicode字符

    JavaScript中,使用Unicode 需要 \u 进行转义,格式 "\u十六进制" console.log(\u0031); console.log(\u0041); // ...

  9. ElasticSearch 一

    一:elasticSearch的目录结构的分类 /bin 运行ElasticSearch实例和管理插件呢的一些脚本 /config 配置文件 路径,包含elasticsearch.yml /data ...

  10. vim编辑器显示行号

    Vim编辑器显示行号的设置 1. 显示行号 :set nu 2. 不显示行号 :set nonu :set nu :set nonu