学习目标:

1.熟练使用正则表达式符号
2.正确组合和理解一般的正则表达式
3.能够使用python操作正则表达式


学习内容:

1.正则表达式

1.处理文本成为计算机常见工作之一
2.对文本内容的搜索提取是一项比较复杂困难的工作
3.为了快速方便处理上述问题,正则表达式技术诞生,主要发展为一个被众多语言使用的独立技术 。

2.正则表达式定义

定义:即高级文本匹配模式,提供了搜索,替代等功能。本质是由一系列特殊符号和字符组成的子符串,这个子符串即是正则表达式。 这个表达式描述了字符和字符的重复行为,可以匹配一类特征的字符串。

3.正则表达式特点

正则表达式特点
*方便进行检索和修改
*支持语言众多
*灵活多样
*mongo正则类型,django等框架作为url匹配,爬虫

4.正则表达式使用

re.findall(pattern,string)
功能:使用正则表达式匹配字符串
参数:pattern 正则表达式
string 目标字符串
返回值
示例代码:

In [1]: s="my email is lvze@tedu.cn"In [2]: import reIn [3]: re.findall("\w+@\w+\.cn",s)
Out[3]: ['lvze@tedu.cn']

元字符 (即正则表达式中有特列含义的符号)
1.普通字符
元字符:abc
匹配规则:匹配相应的普通字符

In [9]: re.findall("abc","abcfhgabcadsfsaabca")
Out[9]: ['abc', 'abc', 'abc']

2.或
元字符: ab|cd
匹配规则:匹配|两达任意一个正则表达式符合的情况
注意:|两侧不要有没用的空格

In [10]: re.findall("ab|cd","abcdefhabcdhig")
Out[10]: ['ab', 'cd', 'ab', 'cd']In [12]: re.findall("ab|bc","abcdaaaab")
#匹配一个后面不在匹配
Out[12]: ['ab', 'ab']

3.匹配单一字符
元字符 .
匹配规则:匹配除了换行之外的任意字符
f.o 可以匹配 foo fao f@o


In [13]: re.findall("f.o","foo is  not  fao")
Out[13]: ['foo', 'fao']
#任何字符都可以匹配,但只能匹配一个
In [14]: re.findall("你.","你好 你坏")
Out[14]: ['你好', '你坏']

4.匹配开始位置
元字符:^
匹配规则:匹配一个字符串的开始位置

In [15]: re.findall("^hello","hello world hello")
Out[15]: ['hello']
#只匹配一个hello,为开头hello

5.匹配结束位置
元字符:$
匹配规则:匹配目标字符串的结束位置

In [17]: re.findall("he$","adfasdfas,adsfsadaf,he")
Out[17]: ['he']

6.匹配重复
元字符: *
匹配规则:匹配前面的正则表达式重复0次式多次

In [18]: re.findall("ho*","ho,hoooo,hof,hoooooooooooooo,h")
Out[18]: ['ho', 'hoooo', 'ho', 'hoooooooooooooo', 'h']

7.匹配重复
元字符:+
匹配规则:匹配前面的正则表达式重复1次或多次

In [19]: re.findall("ab+","ab,a,abb,aba")
Out[19]: ['ab', 'abb', 'ab']

8.匹配重复
元字体无完肤 ?
匹配规则:匹配前面的正则表达式重复0次或1次

In [21]: re.findall("ab?","abcdefa")
Out[21]: ['ab', 'a']

9.匹配重复
元字符:{n}
匹配规则:匹配指定的重复次数
ab{3} 匹配 abbb


In [23]: re.findall("ab{5}","abbbbbbbb,abbbbbb")
Out[23]: ['abbbbb', 'abbbbb']

10.匹配重复
元字符:{m,n}
匹配规则:匹配前面的正则表达式重复m次到n次
ab{3,5} abbb abbbb abbbbb

In [24]: re.findall("ab{3,5}","abbbbbbbbbbbabbbbbbabbbbabbba...: bb
Out[24]: ['abbbbb', 'abbbbb', 'abbbb', 'abbb']

11.匹配字符集合
元字符:[]
匹配规则:匹配括号范围内的任意一个字符
[abc123d] 可以匹配 a b c 1 2 3 d
[a-z] 小写26个字母
[A-Z] 大写26字母
[0-9] 数字0-9

In [25]: re.findall("[0-9]","hello word 123")
Out[25]: ['1', '2', '3']

12.匹配字符取反集合
元字符[^…]
匹配规则:匹配除指定字符集之外的任意字符

re.findall("[^abc]","nihao abc")
Out[2]: ['n', 'i', 'h', 'o', ' ']

13.匹配任意(非)数字字符
元字符: \d \D
匹配规则; \d 匹配任意数字字符 [0-9] \D匹配任意非数字字符 [^0-9]

re.findall("1\d{10}","1595061235,1545455455,15443134543434")
#匹配手机号规则
Out[3]: ['15443134543']

14.匹配(非)普通字符(普通字符:数字字母下划线)
元字符: \w \W
匹配规则:\w 匹配普通字符 \W 匹配非普通字符

re.findall("\W+","hello$$$ $$$helllo")
Out[6]: ['$$$ $$$']
re.findall("\w+","hello1 $")
Out[4]: ['hello1']

15.匹配(非)空字符
元字符:\s \S
匹配规则:\s 匹配任意空字符 [\n \t \r \0] \S匹配任意非空字符

re.findall("\s","asdfs aasd ss")
Out[7]: [' ', ' ']re.findall("\S","asdfas asas sfsaf")
Out[8]: ['a', 's', 'd', 'f', 'a', 's', 'a', 's', 'a', 's', 's', 'f', 's', 'a', 'f']
re.findall("\s","aadas\n\r\t\0")
Out[9]: ['\n', '\r', '\t']
#小测验
#取出World China
re.findall("[A-Z]\S+","hello World nihao China ###")
Out[12]: ['World', 'China']

16.匹配起止位置
元字符:\A \Z
匹配规则 \A匹配开始位置 \Z匹配结置位置
绝对匹配 \Aabc\Z 匹配出abc (且字符串只是abc)

In [15]: re.findall("\A/\w+/\w+\Z","/azheng/saao")
Out[15]: ['/azheng/saao']

17.匹配(非)单词边界位置
元字符: \b \B
匹配规则: \b 匹配单词的边界 \B匹配非单词的边界

单词边界:数字字母下划线和其他字符的交界位置为单词的边界

In [18]: re.findall(r"\bis\b" ,"This is a test")
#r是源始字符串,让转义字符失效
Out[18]: ['is']
#匹配第一个is
In [22]: re.findall(r"\Bis\b" ,"This is a test")
Out[22]: ['is']

5.元字符总结:

匹配单个字符: a .   \d  \D  \w  \W  \s  \S  [...]       [^...]
匹配重复性 *   + ?  {n}    {m,n}
匹配某个位置:^    $   \A     \Z  \b  \B
其他: |  ()  \

6.简单练习

匹配长度8-10位的密码 必须以数字开头,数字字母下划线组成

In [23]: re.findall("^[0-9]\w{7,9}","1asdfs124")
Out[23]: ['1asdfs124']

学习时间:

1、2020年10月27日早


学习产出:

1、 技术笔记 1 遍 2、CSDN 技术博客 1 篇

python正则表达式基础学习(一)相关推荐

  1. python正则匹配找到所有的浮点数_Python随笔17:Python正则表达式基础(4):贪婪匹配和最小匹配...

    Python正则表达式 贪婪匹配/最小匹配 Re库默认采用贪婪匹配,即匹配最长的子字符串.在量词后面加一个"?",即可由贪婪匹配化为最小匹配. '*'用于将前面的模式匹配0次或多次 ...

  2. Day2:python爬虫基础学习(大嘘)

    Day2:python爬虫基础学习(大嘘)) 教材&参考: 学习过程 Sublime配置教程 下载&安装 语言(设置中文) 设置字体/配色 配置Python环境 使用python官方编 ...

  3. 软件测试Python编程基础学习分享

    #博学谷IT学习技术支持# 目录 一.前言 二.python基础 2.1print函数的简单使用 2.2注释 2.2.1单行注释 2.2.2多行注释 2.3Python代码中三种波浪线和 PEP8 2 ...

  4. 1 python编程基础学习

    1 python编程基础学习 1. 程序 2 python简介(了解) 3 python的开发环境的搭建 4 第一个python程序 4.1 常用的dos命令 4.2 交互式 4.3 使用pychar ...

  5. python pyramid基础学习二

    python pyramid基础学习二 1.前言 前面我们使用了基础命令创建pyramid项目,并运行了Hello word,万事开头难,我们知道了开发pyramid项目需要一个env文件夹,里面包 ...

  6. 第10期:Python零基础学习路线

    大家好,我是你们的老朋友老王随聊,今天和大家讨论的话题--Python零基础应该怎么学? 通过这段时间和群里同学们交流,发现很多大学生甚至职场小白对Python学习路线不是很清晰,所以我花了一些时间给 ...

  7. 分享一些我个人学习Python的一些学习建议(附Python零基础学习资料)

    Python是1991年推出,是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言,诞生之初定位是面向给系统管理,科研,教育和非程序员群体等使用的: 相比较其他语言,Python有简单易学. ...

  8. python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...

    原标题:Python基础语法精心总结!看完都知道的可以往下继续学习了 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 1. input 用户自己输入值 2. print 打印值 可 ...

  9. python零基础能学吗 知乎-Python零基础学习能学好吗?老男孩Python面授班

    零基础学习Python真的可以学习好吗?我想对于这个问题,是大部分想要学习Python的人都会纠结考虑的问题吧,也是很多小白最关注的的问题,今天为大家详细的解释一下. Python语言因为具有一定的独 ...

最新文章

  1. SpringCloud 2020版本教程1:使用nacos作为注册中心和配置中心
  2. SAP MM ME21N 创建PO时报错 - Net price in CNY becomes too large – 之原因分析
  3. java.util.Queue用法
  4. Spring学习3之IOC创建对象的方式
  5. 迅速解决!!!!!启动Tomcat报错PermGen space
  6. Android studio | From Zero To One ——安装教程及前期学习总结
  7. python设置图片透明度_学习python第40天
  8. 你和985硕博研究生,差了这些东西
  9. java构造器_Java构造器就是这么简单!
  10. 交大计算机学硕往年录取情况,上海交通大学2020年考研报录情况汇总及分析
  11. Bootstrap 表单的帮助文本
  12. html手机端富文本,pc端富文本编辑的字符串在手机端适配
  13. cocos2d-x 调用java_cocos2d-x中通过Jni实现Java与C++的互相调用
  14. Python中直接查看对象值和使用print()输出的区别
  15. 网站程序 Bin目录下 dll无法删除,删除并编译后自动重新引用的解决方法
  16. 清华大学计算机课程对应教材,清华大学计算机专业大一到四的课程 教材详细名字...
  17. matlab 液压控制系统设计,基于MATLAB的液压系统的设计与仿真
  18. JS混入(mix-in)小案例
  19. css实现方框内打勾
  20. 如何维持手机电池寿命_教你一招,可以让你的手机电池容量长期维持在峰值,延长电池寿命...

热门文章

  1. 【机器学习笔记11】高斯混合模型(GMM)【上篇】原理与推导
  2. 如何用css排段落,标准网页中用CSS进行段落排版的方法
  3. 圣杯布局详解--浮动
  4. 我的离职访谈报告——(摘录华为离职员工)
  5. OpenCV实现按指定间隔抽取视频中的图像帧
  6. Java中,通过synchronizedXxx()将线程不安全的集合转换成线程安全的集合
  7. 各主流浏览器内核总结
  8. 线性代数 --- 投影Projection 六(向量在子空间上的投影)
  9. JS对HTML代码的转义(转码)和反转义(解码)
  10. 对话式AI系列:中关村科金领域知识中台建设方法论与实践