0. 替换(substitute)

  • 去除所有的 html 标签

    re.compile(r'<[^>]+>').sub('', html)# sub:表示 substitute,替换
  • 去除所有的非字母

    re.sub('[^a-zA-Z]', ' ', text)

1. re.search(re, str):寻找符合正则的子串本身

我们要移除如下字符串中的数字:

>>> raw = 'Toy Story (1995)'

(已知数字仅出现在最右侧,表达电影的年份)

>>> grps = re.search('\((\w+)\)', raw)
>>> grps
<_sre.SRE_Match object at 0x01A19960>

如果此时未在字符串中找到字符匹配,re.search() 的返回为 NoneType 对象,对 NoneType 对象进行任何操作,显然都是非法的。所以一定要对 re.search() 的返回值做判断:

>>> if grps:
...     raw[:grps.start()].strip()
...
'Toy Story'

2. 切分文本(split)

import re
re.compile('\\W*').split(sentences)
  • (1)\W:非字符
  • (2)\\W:第一个斜线表示转义;

我们可以再加一些额外的判断逻辑(或叫断言,predicate)以屏蔽那些非单词

[word.lower() for word in re.compile('\\W*').split(sentences) if len(word) > 2 and len(word) < 20]

分隔符为数量不定的一组空白符(制表符\t,空格,换行符\n),则描述一个或多个空白符的 regex 是 \s+:

>> text = 'foo    bar\t b\naz \t    qux'
>> re.split('\s+', text)
['foo', 'bar', 'b', 'az', 'qux']

调用re.split('\s+', text)时,正则表达式会先被编译,然后在 text 上调用其 split 方法,,当然也可用 re.compile 自己编译 regex 以得到一个可重用的 regex 对象:

>> regex = re.compile('\s+')
>> regex.split(text)
['foo', 'bar', 'b', 'az', 'qux']
>> regex.findall(text)
['    ', '\t ', '\n', ' \t    ']

3. re.findall 指定长度切分

>> s = 'abcdef'
>> re.findall('.{3}', s)
['abc', 'def']

当要切分的对象其长度不满足于切片的倍数时:

>> s = 'abcdefgh'
>> re.findall('.{3}', s)
['abc', 'def']

将会把末尾的部分舍去;

4. group:分组

python group()

待匹配的 pattern 中必须有小括号,否则 group 返回为 None;

import re
a = "123abc456"
pattern = '([0-9]*)([a-z]*)([0-9]*)'
print re.search(pattern, a).group(0)   #123abc456,返回整体# 等价于 re.search(pattern, a).group()
print re.search(pattern, a).group(1)   #123
print re.search(pattern, a).group(2)   #abc
print re.search(pattern, a).group(3)   #456

Python 基础 —— re:正则表达相关推荐

  1. 莫烦 Python 基础 Set正则表达

    我的视频学习笔记 Set char_list = ['a', 'b', 'c', 'c', 'd', 'd', 'd'] # 通过set可以去除掉不同的东西 sentence = 'Welcome B ...

  2. Python之面向对象和正则表达(代数运算和自动更正)

    面向对象 一.概念解释 面对对象编程(OOP:object oriented programming):是一种程序设计范型,同时也是一种程序开发的方法,实现OOP的程序希望能够在程序中包含各种独立而又 ...

  3. python 基础系列(十二) — python正则

    python 基础系列(十二) - python正则 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独 ...

  4. Python 之正则表达re.compile()与re.findall()详解

    在使用爬虫提取网页中的部分信息时,采用到了re.compile()与re.findall()两种方法,目的:把网页中的"某某城市土地规划表"截取并打印出来. 网页中的代码: < ...

  5. python学习——正则表达项目

    主要实现功能 从网页爬取关键信息,展示在自己写的界面上. 从http://www.5ppt.net/aricle.asp?id=3947&p=1,获取各个国家的疫情信息. 实现思路 使用req ...

  6. 【Python基础】Python正则表达式入门到入魔

    关于正则表达式,很多人认为,使用的时候查询下就可以,没必要深入学习,但是知识与应用永远都是螺旋辩证的关系,有需要查询也无可厚非,但是先掌握知识,可以让应用更创新,更深入,超越他人,必须要先掌握大量的深 ...

  7. 【Python基础】字符串专题总结

    这篇是字符串专题总结 除了常见的数值型,字符串是另一种常遇到的类型.一般使用一对单引号或一对双引号表示一个字符串. 字符串中如果遇到 \ 字符,可能是在做字符转义,所谓的转义便是字符的含义发生改变,比 ...

  8. python标准库很丰富支持多种编程范式_基础班-第03天{python基础}

    声明:内容来源于网络,本人只是在此稍作整理,如有涉及版权问题,归传智播客官方所有. 认识python(了解) 1.Python发展历史 起源 Python的作者,Guido von Rossum,荷兰 ...

  9. Python基础知识总结

    1. Python基础知识 1.1  Python历史 1.1.1 Python起源 Python的作者,Guido von Rossum,荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计 ...

  10. python基础面试题

    python面试题库--1Python基础篇 第一部分 Python基础篇(80题) 为什么学习Python? 语言本身简洁,优美,功能超级强大,跨平台,从桌面应用,web开发,自动化测试运维,爬虫, ...

最新文章

  1. DOTA系列 食尸鬼(小狗)攻略
  2. CLR via C# 读书笔记 1-2 创建线程的成本
  3. 在写HTML和CSS时的黄金规范
  4. 基于Java+SpringBoot+vue+node.js实现自行车租赁平台管理系统
  5. 作者:李涛,男,南京邮电大学计算机学院、软件学院院长,南京邮电大学大数据研究院院长。...
  6. 阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > CoAP协议接入 >
  7. Linux故障解决(4)——新安装的CentOS 系统无法上网解决方法 (未知的名称或服务)
  8. 快速突破面试算法之数学运算篇
  9. java坦克大战图片素材包,坦克大战素材包
  10. CC2530单片机精确延时的时间分析
  11. android开发 手写签名,Android实现手写签名
  12. Spring-IoCDI
  13. 概率论知识回顾(十):二维连续随机变量分布函数和联合密度函数
  14. 360小程序搭载浏览器,再创PC时代又一春
  15. java操作RabbitMQ
  16. 24点问题(增加数据)·回溯
  17. 总不能因为杯子碎了就不再喝水了吧
  18. 基于51单片机的羽毛球计分器设计
  19. Learning Disentangled Label Representations for Multi-label Classification
  20. 50款精美的PSD按钮素材

热门文章

  1. IDEA(2018版)实用快捷键整理
  2. 【Linux 命令学习第一天
  3. java模拟内存溢出并分析_模拟内存溢出通过MAT分析
  4. CUDA精进之路(五):图像处理——OTSU二值算法(最大类间方差法、大津法)
  5. iostream stdlib fstream io.h 头文件的作用
  6. 基于内容的视频标注——关键帧图象层标注
  7. SCI从入门到精髓(三)——如何写出牛文章
  8. 401 un[Authorize]
  9. CentOS Bash 命令补全增强软件包 bash-completion
  10. BZOJ2563 阿狸和桃子的游戏