Python学习之旅(二十五)
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学习之旅(二十五)的更多相关文章
- python学习之旅(十五)
Python基础知识(14):函数(Ⅴ) 一.装饰器 decorator:本质上就是函数,可以增强函数的功能. 定义起来虽然有点复杂,但使用起来非常灵活和方便 1.不修改被装饰函数的源代码 2.不修改 ...
- Python学习笔记(二十五)操作文件和目录
摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319253241 ...
- python学习笔记(二十五)重写父类方法
python继承中,如果子类在调用某个方法时,它首先是从派生类(也就是当前类)中去找对应的方法,如果当前类中找不到对应的方法,就会去基类(派生类)中去逐个查找. 若父类的方法不能满足子类的需要,那么子 ...
- C#学习基础概念二十五问
C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...
- Python学习之旅(十二)
Python基础知识(11):高级特性 一.分片(切片) 通过索引来获取一定范围内的元素 #字符串 s="Alice" s[0:4:2] 结果: 'Ai' #列表 l=[1,2,3 ...
- Python学习笔记【第十五篇】:Python网络编程三ftp案例练习--断点续传
开发一个支持多用户在线的FTP程序-------------------主要是学习思路 实现功能点 1:用户登陆验证(用户名.密码) 2:实现多用户登陆 3:实现简单的cmd命令操作 4:文件的上传( ...
- Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能
前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...
- 【Java学习笔记之二十五】初步认知Java内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...
- python学习笔记(二十八)日志模块
我们在写程序的时候经常会打一些日志来帮助我们查找问题,这次学习一下logging模块,在python里面如何操作日志.介绍一下logging模块,logging模块就是python里面用来操作日志的模 ...
- python学习笔记:(十五)迭代器和生成器
一.迭代器: 1.迭代器是python最强大的功能之一,是访问集合元素的一种方式. 2.迭代器是一个可以记住遍历的位置的对象. 3.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问结束.迭代 ...
随机推荐
- Elasticsearch冷热集群搭建
ES版本:6.2.4 集群环境:7台机器,每台部署一个master节点.其中3台部署2个hot节点,另外4台部署2个warm节点.共21个节点. 1. 挂盘 按实际情况分盘,一个机子上的2个data节 ...
- 如何在一小时内更新100篇文章?-Evernote Sync插件介绍
上一篇"手把手教你制作微信小程序,开源.免费.快速搞定",已经教会你如何快速制作一个小程序,但作为资讯类小程序,内容不可少,并且还需要及时更新. 但是,如果让你复制粘贴,可能还需要 ...
- Java虚拟机垃圾回收:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法
在<Java对象在Java虚拟机中的创建过程>了解到对象创建的内存分配,在<Java内存区域 JVM运行时数据区>中了解到各数据区有些什么特点.以及相关参数的调整,在<J ...
- 微信SDK登录无法调起,微信SDK无法接收回调的几种解决办法
今天有位同事请求帮忙调试微信登录问题,他遇到了以下2个问题,所以,写篇日志备忘,如果有其它朋友遇到此类问题,都可以照此解决! 平时在开发中,有些开发者经常会遇到微信登录SDK登录时,无法调起微信客户端 ...
- Xcode9.2打包图片显示异常解决方案
链接:https://www.jianshu.com/p/ca0bbb403143來源:简书 在使用Xcode9.2适配iPhone X的过程中遇到了部分图片显示异常(不显示或花掉)的问题.主要分两种 ...
- mac 10.12 sierra 机械键盘+ratm可编程鼠标记录
系统:mac 10.12 sierra 键盘:机械键盘 鼠标:mad catz ratm 在mac 10.11/10.12 之前: 机械键盘:一般的机械键盘在mac上使用, alt 和 win 键 ...
- php中urlencode与rawurlencode的区别
前段时间说自己遇到了个<URL加号引发错误>的BUG,引起这个bug的原因就是自己在URL中使用了 urlencode 函数,该函数会把空格转换成加号,这样就导致URL解析出错,而空格只有 ...
- Nginx的location匹配规则
一 Nginx的location语法 location [=|~|~*|^~] /uri/ { … } = 严格匹配.如果请求匹配这个location,那么将停止搜索并立即处理此请求 ...
- Java多线程系列——计数器 CountDownLatch
简介: CountDownLatch 是一个非常实用的多线程控制工具类,通常用来控制线程的等待,它可以让某个线程等待直到倒计时结束 CountDownLatch 提供了两个主要的方法,await(). ...
- 关于azkaban上传job压缩包报错问题的解决方案
在azkaban上传job压缩包如果出现 installation Failed Error Chunking during uploading files to db.. 错误,可通过如下方法解决. ...