1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. import re
  4. print(re.findall('alex','yyyyabbblalexrrreooox'))
  5.  
  6. # ”.“ 通配符 匹配除开”\“以外的其他字符
  7. print(re.findall('al.x','yyyyaalqxbbblalexrrreooox'))
  8.  
  9. #”^“ 在启始位置匹配:
  10. print(re.findall('^al','alyyyyaalqxbbblalexrrreooox'))
  11.  
  12. #”$“ 在结束位置匹配:
  13. print(re.findall('oo.$','alyyyyaalqxbbblalexrrreooox'))
  14.  
  15. #”*“ 表示重复 在出现的位置表示对"前一个"字符可以匹配0到多个字符:
  16. print(re.findall('al.*a','alyyyyaalqxbbblalexrrreooox'))
  17.  
  18. #”+“ 表示重复 在出现的位置表示对"前一个"字符可以匹配1到多个字符:
  19. print(re.findall('al.+x','alyyyyaalqxbbblalexrrreooox'))
  20.  
  21. #”?“ 表示重复 在出现的位置表示对"前一个"字符可以匹配0到1个字符:
  22. print(re.findall('al.?x','alyyyyaalqxbbblalexrrreooox'))
  23.  
  24. #”{}“ 表示重复 在出现的位置表示对"前一个"字符可以匹配指定范围个字符:
  25. print(re.findall('al.{1,3}x','alyyyyaalqxbbblalexrrreooox'))
  26.  
  27. #”[]“ 表示重复 在出现的位置表示可以匹配指定字符出现请 :
  28. print(re.findall('a[a-z]d','acd'))#a开头 中间出现a-z中任意一个字符 d结尾 都可以匹配 例如 "abd','acd'
  29. #在[]中出现的元字符 都没有特殊功效只能匹配成一般字符 除开 ”-“表示范围 "^"表示 非 "\d" 表示 数字
  30. print(re.findall('a[^f]d','acd')) #a开头 中间出现非f d结尾 都可以匹配 例如 "abd','acd'
  31. print(re.findall('a[\d]d','acd')) #a开头 中间出现数字 d结尾 都可以匹配 例如 "a1d','a5d'
  32.  
  33. """
  34. \ 反斜杠后边跟元字符去除特殊功能
  35. 反斜杠后边跟普通字符实现特殊功能
  36. \d 匹配十进制数字 相当于[0-9]
  37. \D 匹配任何非数字字符 相当于[^0-9]
  38. \s 匹配任何空白字符 相当于[\t\n\r\f\v]
  39. \S 匹配任何非空白字符 相当于[^\t\n\r\f\v]
  40. \w 匹配任何字母数字字符 相当于[a-zA-Z0-9_]
  41. \W 匹配任何非字母数字字符 相当于[^a-zA-Z0-9_]
  42. \b 匹配一个单词后面的空格
  43.  
  44. """
  45.  
  46. #正则表达式的 函数
  47.  
  48. #match : re.match(pattern,string,flags=0) 只匹配启始位置 并且只匹配一次 找到后退出
  49. r =re.match('com','comwww.runcomoob')
  50. print(r.group())#输出匹配到的字符
  51. print(r.span())#输出匹配到字符的位置信息 启始位置 和终止位置(0,3)
  52.  
  53. #search : 和match的区别是search匹配任意位置 并且只匹配一次找到后退出
  54. rs = re.search('com','www.runcomoob')
  55. print(rs.group())#输出匹配到的字符
  56. print(rs.span())#输出匹配到字符的位置信息 启始位置 和终止位置(7,10)
  57.  
  58. #findall: 和上面两个函数方法的 是查询出所有匹配的字符串
  59. ra = re.findall('com','comwww.runcomoob')
  60. print(ra)
  61.  
  62. #findditer: 匹配方法和 findall一样就是返回值 是返回的一个列表
  63. rr = re.finditer('com','comwww.runcomoob')
  64. for item in rr:
  65. print(item.group())
  66. print(item.span())
  67.  
  68. #sub 安装匹配的字符串替换内容 参数1-需要匹配的字符串格式 2-替换后内容 3-需要替换的原字符串
  69. rsu= re.sub('g.t','have','Y get A,I got B ,I gut C')#返回替换后的字符串
  70. print(rsu)
  71. rsu1 = re.sub('g.t','have','Y get A,I got B ,I gut C',2)#返回替换后的字符串 指定最大替换次数2
  72. print(rsu1)
  73.  
  74. #subn 安装匹配的字符串替换内容 参数1-需要匹配的字符串格式 2-替换后内容 3-需要替换的原字符串 返回值多了 返回替换成功次数
  75. rn= re.subn('g.t','have','Y get A,I got B ,I gut C')#返回替换后的字符串
  76. print(rn)
  77.  
  78. #splite 按照匹配的格式分拆
  79. rp = re.split('\d+','one1tow2tree3four4')
  80. print(rp)
  81.  
  82. #compile 把正则表达式编译成一个对象 便于多次调用
  83. text = "JGood is a handsome boy, he is cool, clever, and so on..."
  84. regex = re.compile(r'\w*oo\w*')#创建正则表达式对象 regex
  85. print(regex.findall(text)) #查询所有包含'oo'的单词
  86.  
  87. # r 转意字符
  88. r5=re.search(r'\\com','adddss\com').group() #匹配‘\com'
  89. print(r5)
  90.  
  91. #------正则分组::去已经提取到的数据中在提取指定数据
  92. ors="hasaabc dfuojqw halaabc m098u29341"
  93. ra1 = re.findall('h(\w+)a(ab)c',ors)#默认提取到两个 'halaabc','hasaabc' 在把其中括号括起来的'as','al' 取出来分别和后面'ab'
  94. # 组一个值 [('as','ab'),('al','ab')]
  95. print(ra1)
  96.  
  97. #match 和 search 分组方式一样
  98. origin ="has dfuojqw1m098u29341"
  99. r= re.match("h\w+",origin) #一般正则匹配未分组
  100. r=re.match("h(\w+)",origin)#匹配后分组 显示('as',)
  101. r =re.match("h(?P<name>\w+)",origin)#匹配后分组,并把分组结果保存在字典中 keyname
  102.  
  103. print(r.group())
  104. print(r.groups())
  105. print(r.groupdict())
  106.  
  107. #splite
  108.  
  109. orr = "hello alex bcd alex lge alex acd 19"
  110. rs = re.split('(alex)',orr,1) #分组后 把匹配值 也显示出来['hello ', 'alex', ' bcd alex lge alex acd 19']
  111. rrs = re.split('alex',orr,1)# 未分组,只才分['hello ', ' bcd alex lge alex acd 19']
  112. print(rrs)
  113. print(rs)

python基础学习1-正则表达式的更多相关文章

  1. python基础学习笔记——正则表达式

    1.什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并通过 r ...

  2. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  3. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  4. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  5. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  6. (一)python基础学习

    根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...

  7. python基础学习(起步)

    目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...

  8. python基础之坑爹正则表达式

    python基础之坑爹正则表达式 概述 re模块就是python语言中的正则表达式,拆出来单独写一条blog是因为正则表达式本身就是比较庞大的知识,写具体些让自己以后方便查找. IP: ^(25[0- ...

  9. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  10. Python基础学习一

    Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...

随机推荐

  1. asp.net mvc多级目录结构和多级area实现技巧

    今天在工作要实现这个多级area.其原因是这个项目需要多级的功能,大的类别里有小的类别,小的类别里有具体的功能项,每一个功能项还有若干动作Action,所以在菜单和mvc工程的结构上都需要有体现多级的 ...

  2. Jquery的跨域调用

    JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念.当然,究其本质还是通过script标签动态加载js,似乎这是实现真正跨域的唯一方法. getJSON ...

  3. 用以替换系统NSLog的YouXianMingLog

    用以替换系统NSLog的YouXianMingLog 这是本人自己使用并改良的用以替换系统NSLog的类,非常好用,以下是使用示例,现在开源出来并提供源码,好用的话顶一下吧^_^ 效果: YouXia ...

  4. Linux 隐藏系统信息

    Linux查看系统信息 [更多参考]https://www.cnblogs.com/ftl1012/p/uname.html Linux隐藏系统信息 查看: cat /etc/issue.net    ...

  5. 铁乐学python_Day41_线程01

    线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程. 程序和进程的区别就在于: 程序是 ...

  6. Nginx-基础配置

    正文 本文转载自:http://www.ha97.com/5194.html 文章经过我排版和润色再加工,更加易读.实在是了解nignx配置的基础好文章. 正文 定义Nginx运行的用户和用户组 us ...

  7. randint(1,100) s.add(n) 集合的去重复性

  8. Memcached与Redis对比,Redis基础笔记回顾

    Memcached 1.为什么要把数据存入内存?快 2.Memcached和Redis的区别 (1)Memcached缓存.Redis数据库,Memcached不支持持久化到磁盘 (2)Redis提供 ...

  9. TeamViewer app案例分析

    产品 产品名 TeamViewer远程app 选择原因 远程连接软件是不时之需,当有时私人电脑没有在身边而又需要操作电脑时,远程控制TeamViewer这个软件能帮我们大忙. 调研与评测 1.第一次上 ...

  10. angularjs-$location

    $location服务分析浏览器地址栏中的URL(基于window.location),让我们可以在应用中较为方便地使用URL里面的内容.在地址栏中更改URL,会响应到$location服务中,而在$ ...