Python内部的re--传闻中的正则模块,是无数初学者心中的噩梦,几乎到了谈正则色变的地步。

1.正则是干什么的

  正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

  也就是说正则做了两件事,一件事就是制定匹配的规则(如:只匹配数字),一件事是对符合规则的数据进行处理(提取、赋值、删除等)。

  那正则究竟有什么实际的用途呢?

  比如说:使用Python在做爬虫时(如爬取拉钩),服务器传回的response数据主体是HTML代码,需要使用正则匹配并提取相应的字段(如职位名称),这样就会获得好多的键值对({'职位名称':'Python高端工程师'},感兴趣的可以看看我的练手小项目

  再比如说:公司领导安排人事部门,统计一下近一年所有投寄的简历,要求汇总姓名、电话等,人事的同事看了下简历,我去,1000+份,工作量太大了,向你求助,这时候,你就可以使用Python循环读取每个文件,使用正则匹配里面的姓名、电话等,保存到Excel里,分分钟完成。

2.正则的第一件事:制定匹配的规则

  Python官方:https://docs.python.org/3.7/library/re.html

  官方文档可阅读性差些,但是胜在“真实”(实用)。

  推荐参考:https://www.jb51.net/tools/zhengze.html

  jb51这个网站对正则的语法,由浅入深的分析,总结的特别好,篇幅太~~~~~~~~~~~~~~长,这里就不复制粘贴了。

  简要说下在Python中如何使用re:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "问道编程"
__date__ = "2019/03/18 19:43" import re # 匹配手机号码
phone_pat = re.compile('^(13\d|14[5|7]|15\d|166|17[3|6|7]|18\d)\d{8}$') # 匹配规则 get_phone1 = '15012341234'
get_phone2 = '12012341234' # 测试用例 print(phone_pat.match(get_phone1)) # 打印结果,生成匹配对象
print(phone_pat.match(get_phone2)) # 返回None

3.常用的re方法s:

re.compile():

  编译一个正则表达式模式为正则表达式对象,其可用于使用它的匹配 match()search()以及其他方法,为了方便重复使用匹配规则,说明如下:

prog = re.compile(pattern)  # pattern 是匹配规则,字符串,通常前面加r,如  r'\d+'  匹配数字的
result = prog.match(string)
# 相当于
result = re.match(pattern, string)

re.search():

  对字符串进行查找匹配,如果有匹配的数据,则返回第一个匹配的对象,如果没有匹配的对象,则返回None:

import re

result = re.search('\d', 'ads123asd')
print(result) # <_sre.SRE_Match object; span=(3, 4), match='1'>

re.match():

  从字符串的开头开始匹配,如果有匹配的数据,则返回第一个匹配的对象,如果没有匹配的对象,则返回None:

import re

result = re.match('\d', 'ads123asd')
print(result) # None 因为开头就不匹配 ,跟search的区别
result = re.search('ads\d', 'ads123asd')
print(result) # <_sre.SRE_Match object; span=(0, 4), match='ads1'>

re.split():

  常用于字符串的切分,返回一个list,非常实用的功能:

import re

s = 'a,b;c d    e'
a = s.split(' ')
print(a) # ['a,b;c', 'd', '', '', '', 'e'] 使用str自带的切分方法局限性太大
b = re.split(r'[,;\s]+',s)
print(b) # ['a', 'b', 'c', 'd', 'e'] # 使用re的切分工具可以实现多种组合的情况

re.findall():

  获取所有匹配的对象,返回list,也是非常实用的功能:

import re

a = re.compile(r'\d+')    # 获取所有数字
b = a.findall('ax2k3h5b6n7')
print(b) # ['2', '3', '5', '6', '7']

re.sub():

  替换匹配的字段,也是re中非常强大的功能,web项目中常用于博客代码高亮的过滤器中:

import re

b = re.sub(r'\d', 'a', 'b1b23b21b34b124')
print(b)

本文参考:https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin

Python常用模块--re的更多相关文章

  1. Python常用模块之sys

    Python常用模块之sys sys模块提供了一系列有关Python运行环境的变量和函数. 常见用法 sys.argv 可以用sys.argv获取当前正在执行的命令行参数的参数列表(list). 变量 ...

  2. Python常用模块中常用内置函数的具体介绍

    Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...

  3. python——常用模块2

    python--常用模块2 1 logging模块 1.1 函数式简单配置 import logging logging.debug("debug message") loggin ...

  4. python——常用模块

    python--常用模块 1 什么是模块: 模块就是py文件 2 import time #导入时间模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的 ...

  5. Python常用模块——目录

    Python常用模块学习 Python模块和包 Python常用模块time & datetime &random 模块 Python常用模块os & sys & sh ...

  6. python 常用模块之random,os,sys 模块

    python 常用模块random,os,sys 模块 python全栈开发OS模块,Random模块,sys模块 OS模块 os模块是与操作系统交互的一个接口,常见的函数以及用法见一下代码: #OS ...

  7. python常用模块之时间模块

    python常用模块之时间模块 python全栈开发时间模块 上次的博客link:http://futuretechx.com/python-collections/ 接着上次的继续学习: 时间模块 ...

  8. python常用模块之subprocess

    python常用模块之subprocess python2有个模块commands,执行命令的模块,在python3中已经废弃,使用subprocess模块来替代commands. 介绍一下:comm ...

  9. python常用模块之string

    python常用模块string模块,该模块可以帮我们获取字母.数字.特殊符号. import string #打印所有的小写字母 print(string.ascii_lowercase) #打印所 ...

  10. python常用模块-调用系统命令模块(subprocess)

    python常用模块-调用系统命令模块(subprocess) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. subproces基本上就是为了取代os.system和os.spaw ...

随机推荐

  1. 在 Confluence 中启用 HTTP 响应压缩

    Confluence 能够支持 HTTP 的 GZip 传输编码.这个意味着 Confluence 将可以把数据压缩后传输给用户,这种配置能够针对不稳定的互联网状态下的传输速度缓慢和不稳定并且能够降低 ...

  2. Confluence 6 嵌入的 H2 数据库

    为了让你的 Confluence 在安装成功后就可以使用而不需要使用任何外部的数据库,Confluence 使用一个嵌入的 H2 数据库. 当你选择对 Confluence 进行评估和测试的时候,H2 ...

  3. Confluence 6 查看你的许可证细节

    希望查看你的 Confluence 许可证: 进入  > 基本配置(General Configuration). 在左侧的面板中选择 许可证详细(License Details). 你的许可证 ...

  4. 进程与程序 并行 并发 串行 阻塞 join函数

    进程是正在运行的程序,程序是程序员编写的一对代码,也就是一堆字符,当这堆代码被系统加载到内存并执行,就有了进程. (需要注意的是:一个程序是可以产生多个程序,就像我们可以同时运行多个QQ程序一样,会形 ...

  5. Visual Studio UML类图

    1.unified Modeling Language(UML)称为同一建模语言或者标准建语言, 用例图:对系统的使用方式的分类.类图:显示类和他们的相互关系.  对象图:只显示对象及他们的相互关系. ...

  6. github文档

    Video Guides GitHub Help GitHub.com   Hello World 10 minute read Intro What is GitHub? Create a Repo ...

  7. Python获取当前时间及时间转换(datetime)

    datetime是Python处理日期和时间的标准库 获取当前时间 import datetime day = datetime.datetime.now() day2 = datetime.date ...

  8. linux下mysql源码安装

    参考链接:http://blog.csdn.net/zqtsx/article/details/9378703 下载mysql安装包, 不会下载点这里 地址:ftp://mirror.switch.c ...

  9. python unittest套件,修改为失败重新执行

    #套件,修改为失败重新执行 import time import unittest from unittest.suite import _isnotsuite class Suit(unittest ...

  10. Python数据类型之字符串

    一:概述 Python中的字符串的一些概念 可以看作是字符的集合,在数据类型里没有单个字符的数据类型,可以用单个字符表示的一个字符串数据类型 字符串是一种不可变的序列类型,单个字符从左到右按照顺序排列 ...