今日内容:

知识点一:正则
 什么是正则:
  就是用一系列具有特殊含义的字符组成一套规则,改规则用来描述具有某一特征的字符串
  正则就是用来在一个大的字符串中取出符合规则的小字符串
  
 为什么用正则:
  1.用户注册
  2.爬虫程序
  
 如何用:
  re.findall
 
re.findall模块:

\w取字母、数字、下划线
print(re.findall('\w','yangzz:age_18 '))
\W取非字母、数字、下划线
print(re.findall('\W','yangzz:age_18 '))

\s匹配任意空白字符串,等价于[\t\n\r\f]  t是一个table键
print(re.findall('\s','\tyangzz\n age_18  '))

\S匹配任意非空字符
print(re.findall('\S', '\tyangzz\n age_18  '))

\d匹配任意数字
print(re.findall('\d', '\tyangzz\n age_18  '))
\D匹配任意非数字
print(re.findall('\D', '\tyangzz\n age_18  '))

\n匹配一个换行符
print(re.findall('\n', '\tyangzz\n age_18 aaa bb\nb '))

\t匹配一个制表符
print(re.findall('\t', '\tyangzz\n age_18 aaa bb\nb '))

^取字符串的开头 (没有返回空列表,从开头第一个匹配)
print(re.findall('^yang', 'yangzz\n age_18  yang aaa bb\nb ')) #['yang']

$匹配字符串末尾
print(re.findall('b$', 'yangzz\n age_18  yang aaa bb\nb')) #['b']

. 匹配任意字符,除了换行符
print(re.findall('.', 'yangzz\n age_18 *%& yang aaa bb\nb'))

例如2 a.g其实是三位字符, .可以是任意非换行符(后面加re.DOTALL中间也可以取到\n)
print(re.findall('a.g', 'yangzz\n age_18 ang *%& yang aaa bb\nb')) #['ang', 'ang']
print(re.findall('a.g', 'ya\nngzz\n age_18 a\ng *%& yang aaa bb\nb',re.DOTALL)) #['a\ng', 'ang']

[a,e,b]匹配[]limian
print(re.findall('[\n]', 'yangzz\n age_18  yang aaa bb\nb'))#['\n', '\n']
print(re.findall('[a,e,b]', 'yangzz\n age_18  yangzhizong aaa bb\nb')) #['a', 'a', 'e', 'a', 'a', 'a', 'a', 'b', 'b', 'b']

print(re.findall('y[a-z]n', 'yangzz\n age_18 yan y1n yang aaa bb\nb'))

取不再括号中的字符
print(re.findall('[^z,a]', 'yangzz'))

*代表左边的字符出现0次或者无穷次(条件一定要有a,b可有可无)
print(re.findall('an*', 'yangzhizong mawenjie annd'))  #['an', 'a']

?代表左边的字符出现0次或者1次(条件一定要有a,b有的话只取一个就行)
print(re.findall('an?', 'yangzhizong mawenjie annd')) #['an', 'a', 'an']

+代表左边的字符出现1次或者无穷次(条件一定要有a,b至少有一个)
print(re.findall('an+', 'yangzhizong mawenjie annd')) #['an', 'ann']

#匹配所有包含小数在内的数字
print(re.findall('\d+\.?\d*',"asdfasdf123as1.13dfa12adsf1asdf3")) #['123', '1.13', '12', '1', '3']

思路:\d 找数字 +表示左边数字出现1次或者无穷次 ???

.*默认为贪婪匹配 (默认取从头到尾取值)
print(re.findall('a.*b','a1b22222222b')) #['a1b22222222b']

.*?为非贪婪匹配:推荐使用
print(re.findall('a.*?b','a1b22222222b')) #['123', '1.13', '12', '1', '3']

{n,m}固定取值,碰到有的 取1个 和2个在一块儿 分开组合
{0,2} 0开始的默认也会把其他打印但是现实为空
print(re.findall('a{0,2}', 'yangzzage18yangaaabbb')) #['', 'a', '', '', '', '', 'a', '', '', '', '', '', '', 'a', '', '', 'aa', 'a', '', '', '', '']
print(re.findall('ab{1,}','abbb'))  #['abbb']

print(re.findall('a[1*-]b','a1b a*b a-b'))

[+-*/] 括号内有加减乘除时,减号要放在左边或者右边 放中间的话只能前面加\ [+\-*/]代表将-转译为不同字符
print(re.findall('a[+\-*/]b','a12ba a++b a*b a-+b'))

re.search()模块
只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法
得到匹配的字符串,如果字符串没有匹配,则返回None。

print(re.findall('e','alex make love'))
print(re.search('e','alex make love')) #<_sre.SRE_Match object; span=(2, 3), match='e'>
print(re.search('e','alex make love').group())  # e

match从开头进行查找,没有的话返回None
print(re.match('e','alex make love'))

split分割 模块
['', '', 'cd'],先按'a'分割得到''和'bcd',再对''和'bcd'分别按'b'分割
print(re.split('[ab]','abcd'))

替换re.sub()模块
1.不加参数默认替换所有
print(re.sub('a','A','abcdeaedaer',1)) #Abcdeaedaer

替换subn(输出可以显示总共替换的个数)
print(re.subn('a','A','abcdeaedaer'))

re.complie()模块
可以定制编译,方便直接调用
obj=re.compile('\d{2}')
print(obj.search('ab123ee').group()) #12
print(obj.findall('ab123ee')) #['12']

python正则re模块的更多相关文章

  1. python 正则 re模块(详细版)

    正则表达式 什么是正则表达式? 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合 ...

  2. python正则--re模块常用方法

    前面几篇关于正则匹配的文章我用的方法都只有一个re.search 但其实正则re模块提供很多非常好用的方法,我们先来看看re模块都有那些属性方法呢 前面的一堆带_或者大写的就不关注了,主要关注最后面的 ...

  3. Python 正则表达模块详解

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  4. python正则-- re模块

    匹配数字相关'.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行'^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r" ...

  5. python 正则re模块

    re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. import re text = "JGood is a handsome boy, he ...

  6. python 正则,常用正则表达式大全

    Nginx访问日志匹配 re.compile #re.compile 规则解释,改规则必须从前面开始匹配一个一个写到后面,前面一个修改后面全部错误.特殊标准结束为符号为空或者双引号:  改符号开始 从 ...

  7. Python开发【模块】:re正则

    re模块 序言: re模块用于对python的正则表达式的操作 '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags ...

  8. 认识python正则模块re

    python正则模块re python中re中内置匹配.搜索.替换方法见博客---python附录-re.py模块源码(含re官方文档链接) 正则的应用是处理一些字符串,phthon的博文python ...

  9. Python模块(三)(正则,re,模块与包)

    1. 正则表达式 匹配字符串 元字符 .   除了换行 \w  数字, 字母, 下划线 \d  数字 \s  空白符 \n 换行符 \t  制表符 \b  单词的边界 \W  \D \S 非xxx [ ...

随机推荐

  1. IT圈网红,抢鲜围观

    即将于2017年10月23-26日,在北京举办的微软技术暨生态大会,是微软中国年度最盛大的科技峰会,是微软技术大会与合作伙伴大会的首次联袂,也是聚集众多IT大咖的技术狂欢派对. 无论你想实现现代化工作 ...

  2. 转:error LNK2005: ...already defined in MSVCRTD.lib

    编译错误: Error1error LNK2005: _CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR110D.dll)\libcmtd.l ...

  3. 第一篇Active Directory疑难解答概述(2)

    从故障诊断的角度来看,无论用户对象存在于哪个Active Directory域中,Exchange都需要访问此数据.这意味着所有包含启用Exchange的对象的域必须对其运行Setup / Prepa ...

  4. 如何修改Ruby的gem源(gem sources)

    Ruby环境下的gem sources地址默认是国外网络地址,所以在使用gem的过程中经常会出现找不到资源的Error.那么如何解决这种Error?方法很简单:要么就多次尝试执行gem命令,要么就修改 ...

  5. 同步Windows 10与MIUI 9来完成你的日程安排

    我们都知道,outlook可以有效管理你的日程.而MIUI 9在负一屏上全新改版了界面,变得更加全面人性化.接下来我将展示几种方法,让你的Windows 10与MIUI 9协同工作. 一.outloo ...

  6. MovieReview—Kingsman THE SECRET SERVICE(王牌特工之特工学院)

    Brain Storming         Mr. Valentine's Day see excess human beings as the Earth's virus and try to e ...

  7. 读书笔记2013-2 Linux内核设计与实现A

    读书笔记2013-2 Linux内核设计与实现A <Linux内核设计与实现> 简介 这本书不是想Linux源码剖析那样一行行分析Linux源代码的书,而是从Linux历史,Linux哲学 ...

  8. 用python写trojan的过程中遇到的各种问题

    由于之前已经conn, addr = s.accept() 所以改为  conn.recv spyder无法同时运行client 和 server 分别在spyder和anaconda prompt运 ...

  9. Controller接收处理json、xml格式数据

    1.RequestBody接收json格式的数据,并直接转为对象. User.java使用lombok依赖包 @Data @AllArgsConstructor @NoArgsConstructor ...

  10. 为管理复杂组件状态困扰?试试 vue 简单状态管理 Store 模式【转】

    https://juejin.im/post/5cd50849f265da03a54c3877 在 vue 中,通信有几种形式: 父子组件 emit/on vuex 中共享 state 跨组件 Eve ...