Python基础知识(24):正则表达式

正则表达式:检查一个字符串是否与某个模式匹配

\d :匹配数字

\w :匹配字母或数字

. :匹配任意字符

{n} :匹配n个字符

{m,n} :匹配m到n个字符

\s :匹配空格

a|b :匹配a或b

^ :匹配字符串开头

$ :匹配字符串结尾

* :匹配0个或多个

+ :匹配1个或多个

? :匹配0个或1个

[abc] :匹配a、b或c

[^abc] :匹配除了a、b、c以外的

re模块:包含正则表达式的所有功能

建议使用Python的r前缀,如r‘\d’

由于Python的字符串本身也用\转义,所以要特别注意

1、match:匹配字符串

import re
m = re.match(r'\d{3}\-\d{3,8}',r'010-23456')
print(m) 结果:
<_sre.SRE_Match object; span=(0, 9), match='010-23456'>

2、search:扫描

import re

s = re.search(r'(.com)',r'someone@gmail.com')
print(s) 结果:
<_sre.SRE_Match object; span=(13, 17), match='.com'>

3、split:切分字符

import re

s = re.split(r'[\,]',r'hello,world')
print(s) 结果:
['hello', 'world']

4、sub:替换

import re

sen = 'Hello2018, 12world06.'
sen1 = re.sub(r'\d', '', sen)
print(sen1) 结果:
Hello, world.

5、group:分组

import re

sen = re.match(r'^(\d{3})-(\d{3,8})$', '010-23456')
print(sen.group(0))
print(sen.group(1))
print(sen.group(2)) 结果:
010-23456
010
23456

验证Email地址的正则表达式

#验证Email地址的正则表达式
import re sen1 = r'someone@gmail.com'
sen2 = r'bill.gates@microsoft.com'
sen3 = r'bob#example.com'
sen4 = r'mr-bob@example.com'
m = r'[\w\.]+\@[\w]+\.(com)'
print(re.match(m,sen1))
print(re.match(m,sen2))
print(re.match(m,sen3))
print(re.match(m,sen4)) 结果:
<_sre.SRE_Match object; span=(0, 17), match='someone@gmail.com'>
<_sre.SRE_Match object; span=(0, 24), match='bill.gates@microsoft.com'>
None
None

资料来源:

1、廖雪峰官网:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193331387014ccd1040c814dee8b2164bb4f064cff000

2、菜鸟教程:http://www.runoob.com/python3/python3-reg-expressions.html

Python学习之旅(二十五)的更多相关文章

  1. python学习之旅(十五)

    Python基础知识(14):函数(Ⅴ) 一.装饰器 decorator:本质上就是函数,可以增强函数的功能. 定义起来虽然有点复杂,但使用起来非常灵活和方便 1.不修改被装饰函数的源代码 2.不修改 ...

  2. Python学习笔记(二十五)操作文件和目录

    摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319253241 ...

  3. python学习笔记(二十五)重写父类方法

    python继承中,如果子类在调用某个方法时,它首先是从派生类(也就是当前类)中去找对应的方法,如果当前类中找不到对应的方法,就会去基类(派生类)中去逐个查找. 若父类的方法不能满足子类的需要,那么子 ...

  4. C#学习基础概念二十五问

    C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...

  5. Python学习之旅(十二)

    Python基础知识(11):高级特性 一.分片(切片) 通过索引来获取一定范围内的元素 #字符串 s="Alice" s[0:4:2] 结果: 'Ai' #列表 l=[1,2,3 ...

  6. Python学习笔记【第十五篇】:Python网络编程三ftp案例练习--断点续传

    开发一个支持多用户在线的FTP程序-------------------主要是学习思路 实现功能点 1:用户登陆验证(用户名.密码) 2:实现多用户登陆 3:实现简单的cmd命令操作 4:文件的上传( ...

  7. Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能

    前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...

  8. 【Java学习笔记之二十五】初步认知Java内部类

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...

  9. python学习笔记(二十八)日志模块

    我们在写程序的时候经常会打一些日志来帮助我们查找问题,这次学习一下logging模块,在python里面如何操作日志.介绍一下logging模块,logging模块就是python里面用来操作日志的模 ...

  10. python学习笔记:(十五)迭代器和生成器

    一.迭代器: 1.迭代器是python最强大的功能之一,是访问集合元素的一种方式. 2.迭代器是一个可以记住遍历的位置的对象. 3.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问结束.迭代 ...

随机推荐

  1. Thymeleaf-语法整理

    Thymeleaf其他案例看其他网站 http://www.cnblogs.com/hjwublog/p/5051732.html http://blog.csdn.net/u012706811/ar ...

  2. SSE图像算法优化系列九:灵活运用SIMD指令16倍提升Sobel边缘检测的速度(4000*3000的24位图像时间由480ms降低到30ms)。

    这半年多时间,基本都在折腾一些基本的优化,有很多都是十几年前的技术了,从随大流的角度来考虑,研究这些东西在很多人看来是浪费时间了,即不能赚钱,也对工作能力提升无啥帮助.可我觉得人类所谓的幸福,可以分为 ...

  3. 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=i5j7gwrxj9x5

    我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=i5j7gwrxj9x5

  4. 解决windows 下 mysql命令行导入备份文件 查询时乱码的问题

    Mysql导入乱码,一般在命令行会遇到.下面说的是命令行的情况下解决乱码问题: 方法一: 通过增加参数 –default-character-set = utf8 解决乱码问题 mysql -uroo ...

  5. MySQL读取配置文件的顺序、启动方式、启动原理

    一.MySQL读取配置文件的顺序 读取顺序:/etc/my.cnf > /etc/mysql/my.cnf > /usr/etc/my.cnf > ~/.my.cnf 命令验证:[r ...

  6. MySQL 5.5主从关于‘复制过滤’的深入探究

    关于MySQL主从复制的过滤,例如通过binlog-ignore-db.replicate-do-db.replicate-wild-do-table等.如果不好好研究过这些过滤选项就用的话,是有可能 ...

  7. delphi 导出到excel的7种方法

    本文来自 爱好者8888 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kpc2000/article/details/17066823?utm_source=cop ...

  8. 【GMT43智能液晶模块】例程十:DMA实验——存储器到存储器的传输

    实验原理: DMA(直接存储器访问)传输不需要占用CPU,可以在存储器至存储器实现高速的数据 传输.本实验采用DMA2控制器的数据流0,选用通道0进行数据传输.通过液晶控制传输 和结果显示. 示例截图 ...

  9. 买了第一台mac

    今天,我的第一台mac到手了.是Macbook air 13.3寸屏的.正好这几天bestbuy大打折,索性入手了一台15年最低配的,一共只花了$750,包括税. 还是有点舍不得,而且用不习惯.

  10. 01Spark的TopN问题

    和hadoop的目的一样,给你数据,然后取TopN.数据如下: 取出数据在排名前十的数据. 代码如下: package com.test.book; import java.util.ArrayLis ...