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. Windows 7安装Tensorflow

    以前是在Cent OS中运行Tensorflow,,经常需要切换操作系统,很不方便,于是决定在Windows 7下安装Tensorflow. 过程还是挺复杂的,需要安装的包括:Visual Studi ...

  2. 一步步教你轻松学朴素贝叶斯模型算法Sklearn深度篇3

    一步步教你轻松学朴素贝叶斯深度篇3(白宁超   2018年9月4日14:18:14) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对 ...

  3. 用反向代理nginx proxy_pass配置解决ie8 ajax请求被拦截问题 ie8用nginx代理实现跨域请求访问 nginx405正向代理request_uri

    最近调PC版网站ie8的兼容性,发现所有ajax请求还没到后端服务器就直接ajax error了 ie8发不出ajax请求,断点调试发现ajax全进入了error,提示“No transport” 我 ...

  4. 算法课笔记系列(七)—— 平摊分析Amortized Analysis

    本周的内容是Amortized Analysis,是对算法复杂度的另一种分析.它的基本概念是,给定一连串操作,大部分的操作是非常廉价的,有极少的操作可能非常昂贵,因此一个标准的最坏分析可能过于消极了. ...

  5. Python之多线程和多进程

    一.多线程 1.顺序执行单个线程,注意要顺序执行的话,需要用join. #coding=utf-8 from threading import Thread import time def my_co ...

  6. Fluent动网格【12】:扩散光顺

    扩散光顺是Fluent提供的另外一种常用的网格光顺方法.其基本原理是通过求解扩散方程得到网格节点的运动位移. 扩散光顺基本计算 扩散光顺通过求解 以下扩散方程来设置网格的节点位置. \[ \nabla ...

  7. Asp.Net任务Task和线程Thread

    Task是.NET4.0加入的,跟线程池ThreadPool的功能类似,用Task开启新任务时,会从线程池中调用线程,而Thread每次实例化都会创建一个新的线程.任务(Task)是架构在线程之上的, ...

  8. ios app qbw.plist demo

    qbw.plist <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC ...

  9. MongoDB增删改查实例

    MongoDB之Java测试代码(DAO层),mongodbdao MongoInit.java是数据库初始化及连接类 MongoUtils.java是对mongodb的各种操作方法 MongoIni ...

  10. 微信小程序,图片居中显示,适配不同机型

    <view style='width:100%;height:100%;text-align:center;' class="picture-2">   <ima ...