今日内容:

知识点一:正则
 什么是正则:
  就是用一系列具有特殊含义的字符组成一套规则,改规则用来描述具有某一特征的字符串
  正则就是用来在一个大的字符串中取出符合规则的小字符串
  
 为什么用正则:
  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. iOS优化

    load妙用 aop面向切面编程 NSNumber Or Int @()适配64位 经过漫长时间的学习 你终于掌握了iOS大法 你找到了份iOS开发的工作 信誓旦旦的要开始你的coding生涯 老板对 ...

  2. Vue风格指南总结及对应ESLint规则配置

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10906951.html,多谢,=.=~ 必要的:规避错误: 强烈推荐:改善可读性和开发体验: 推 ...

  3. HDU 3652 B-number (数位DP,入门)

    题意: 如果一个整数能被13整除,且其含有子串13的,称为"B数",问[1,n]中有多少个B数? 思路: 这题不要用那个DFS的模板估计很快秒了. 状态设计为dp[位数][前缀][ ...

  4. 最新电脑公司最新GHOST WIN7系统32,64位极速安全版

    系统来自系统妈:http://www.xitongma.com 电脑公司最新GHOST win7系统64位极速安全版 V2016年3月 系统简介 电脑公司ghost win7系统64位极速安全版集成了 ...

  5. POJ 4020 NEERC John's inversion 贪心+归并求逆序对

    题意:给你n张卡,每张卡上有蓝色和红色的两种数字,求一种排列使得对应颜色数字之间形成的逆序对总数最小 题解:贪心,先按蓝色排序,数字相同再按红色排,那么蓝色数字的逆序总数为0,考虑交换红色的数字消除逆 ...

  6. ubuntu开放端口

    1.安装iptables(一般情况,ubuntu安装好的时候,iptables会被安装上),使用以下命令: $apt-get update $apt-get install iptables 2.安装 ...

  7. 廖老师JavaScript教程高阶函数-sort用法

    先来学习一个新词:高阶函数 高阶函数英文叫Higher-order function.那么什么是高阶函数? JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那 ...

  8. 简单的cocos2dx笔试题

    1.参数传递有几种方式?值传递.指针传递.引用传递 2.指针和引用有什么分别:如果传引用比传指针安全,为什么?如果我使用常量指针难道不行吗? 1.指针是一个变量,存储一个地址,指向内存的一个存储单元: ...

  9. 【Git版本控制】GitHub上fork项目和clone项目的区别

    fork:在github页面,点击fork按钮,将别人的仓库复制一份到自己的仓库. clone:直接将github中的仓库克隆到自己本地电脑中 问题1:pull request的作用 比如在仓库的主人 ...

  10. ERROR 1045 (28000): Access denied for user 'xxx'@'localhost' (using password: YES) MYSQL 新建用户 无法登录 问题解决方法

    使用mysql ,出现新建账户无法登录问题 查看 user列表中,有部分账户没有设置密码,将全部重新设置一遍密码,然后还是无法登录. 使用命令 update user set password=pas ...