Python-正则表达式及实战小例子
注意Python的字符串本身也用'\'转义,所以要特别注意,一般我们都建议使用Python的r前缀,就不用考虑转义的问题了
1,行的起始
例子:匹配‘cat’ 开头
patt=re.compile(r'^cat') # re.compile 返回一个正则表达式对象
表示匹配以c作为一行的第一个字符,后面跟着a,后面跟着t
所以'vocative'就不会被匹配到,原因是因为cat在字符的里面
2,行的结尾
import re
sentence='''Hi Jack:\n
Python is a beautiful language\n
BR'''
patt=re.compile(r'(BR|Bestregards)$')
m=re.search(patt,sentence)
if m :
print 'match'
else:
print 'not match'
>>
match
要查找sentence中是否以“BR或Bestregards” 结尾
3 ,单词的边界
正则里面有2个特殊字符\b and \B来匹配单词的边界 :
\b 匹配的模式是一个单词的边界(不论这个单词的前面是有字符还是没有字符)
\B 匹配出现在一个单词中间的模式
例如:
the #匹配包含有'the'的字符串
\bthe #匹配任何以'the'开始的字符串
\bthe\b #仅仅匹配单词'the'
\Bthe #匹配任意包含'the'但不以'the'开头的单词
4,字符组
比如我们需要匹配'grey'或者'gray'的时候,怎么办,可以用正则的[]来表示,gr[ea]y,表示先找到g,然后找到r,然后找到e或者a,最后是一个y
patt=re.compile(r'gr[ea]y')#意思就是grey 或者gray都是可以匹配上的
5,多选结构
我们可以用'|'来匹配任意子表达式,'|'是一个非常简便的元字符,它的意思是"或",通过它我们能把不同的子表达式组合成一个总的表达式,比如'am'|'pm'就是能够同时匹配其中任意一个的正则表达式,回头再看上面的例子'gr[ea]y',其实能写成'grey|gray',或者'gr(e|a)y' 6、可选项元素
'?' 表示可选项,问号跟在什么后面就表示什么是可选的
例如:6月4日,可能写成'June'也可以写成'Jun',而且日期也有可能写作'fourth'或者'4th'或者4,这个时候就可以写成June?(fourth|4(th)?),代表了e是可选的,th是可选的,可有可无都表示4号
7,重复出现
+,表示紧邻元素重复出现一次或者多次,至少出现一次,否则返回失败;
*,表示紧邻元素重复出现0次或者多次,允许出现0次;
例如:
- a*表示0个或者多个a,所以为0的时候,就是空字符
- a+表示1个或者多个a,所以a至少要有1次
8,匹配重复的次数
次数用{}里面的数字来表示
例如:patt=re.compile(r'([1-9]{3})') 就表示匹配1-9之间的数字,且这个数字只能出现3次,str='123str' ,就可以匹配上,而str1='2str1'就不能匹配,如果想匹配上要这么写patt1=re.compile(r'([1-9]{1-3})'),1-9数字出现1次或2次或3次 9、排除型字符组
当^在字符组的外面的时候"表示一个行的开头"
当^在字符组的内部(而且是必须紧接着字符组的第一个方括号之后),它就是一个元字符,表示排除型
- 例如:找出字母g后面的字母不是u
import re
words=['gold','Google','Sogu','Guess']
patt=re.compile(r'.*g[^u]') #‘.’匹配任意一个字符,'*'匹配0个或多个字符,g后面不是u for w in words:
m=re.match(patt,w)
if m:
print w>>
gold
Google
实战小例子
1,设计一个正则来过滤一个字符串序列中的10到59
import re patt=r'[1-5][0-9]' lis=[10,20,30,40,2,3,59,60,'aa','3aaa'] match=re.findall(patt,str(lis)) if match:
print(match) 结果:
['10', '20', '30', '40', '59']
2,过滤字符串中的只含2个字符的字母,并且第一个字母是大写A或B或C
patt=r'[A-C][A-Z a-z]'
3,过滤一个字符串中的含3个字母的独立字符
例如:比如这样的一个字符串'xy,1,2,?,123@sohu,Ab,w1,Cz,xyh,abc',只想过滤出来xyh,abc 这样的
patt=r'/b[a-z A-Z]{3}/b' #/b 单词的边界
4、过滤一个字符串中的含3个字母的字符,并且最后一个字母是z
patt=r'/b[a-z A-Z][a-z A-Z][Z]/b'
5,过滤正确的24小时时间制
import re
time='10:00,99:90,8:00,19:19:14:00pm,5:xm,6,00,8:0923:23pm,29:19pm,23:59'
patt = r'\b([01]?[0-9]|2[0-4])(:)([0-5][0-9])'
match = re.findall(patt,time)
if match:
print([''.join(x)for x in match]) 执行结果:
['10:00', '8:00', '19:19', '14:00', '8:09', '23:59']
Python-正则表达式及实战小例子的更多相关文章
- node实战小例子
第一章 2020-2-6 留言小本子 思路(由于本章没有数据库,客户提交的数据放在全局变量,接收请求用的是bodyParser, padyParser使用方法 app.use(bodyParser.u ...
- iOS开发——UI进阶篇(十六)Quartz2D实战小例子
一.画线 只有在drawRect中才能获取到跟view相关联的上下文 - (void)drawRect:(CGRect)rect {} 一条线 // 1.获取跟当前View相关联的layer上下文(画 ...
- python之阶乘的小例子
现在自己写阶乘是这个样子的 def f(x): return x * f(x-1) if x >1 else 1 后来无意中看到耗子的一篇<Python程序员的进化>的文章, 感脚这 ...
- 爱上python(几个小例子)
1.任务:简单测试局域网中的网络是否连接,ip范围:192.168.2.101到192.168.2.200. python 实现代码: import subprocess cmd="cmd. ...
- 【python】由一个小例子看出python的灵活性,IF ELSE一例
temp = input("请输入1到100之间的数字:") num = int(temp) if 1 <= num <= 100: ...
- python 的zip 函数小例子
In [57]: name = ('Tome','Rick','Stephon') In [58]: age = (45,23,55) In [59]: for a,n in zip (name,ag ...
- Java正则表达式防注入小例子
/** * 第一行匹配特殊字符: * 第二行匹配开头和结尾都有空格的: * 第三行匹配结尾有空格的 * */ private Boolean DetermineChar(String reqData, ...
- Python 中class的小例子
class Song(): def __init__(self,lyrics): self.lyrics=lyrics def sing_a_song(self): for line in self. ...
- 这42个Python小例子,太走心
告别枯燥,60秒学会一个Python小例子.奔着此出发点,我在过去1个月,将平时经常使用的代码段换为小例子,分享出来后受到大家的喜欢. 一.基本操作 1 链式比较 i = 3print(1 < ...
随机推荐
- 汽车数据的可视化分析(R)
数据下载:http://www.fueleconomy.gov/feg/epadata/vehicles.csv.zip 将数据导入R中, 1.首先将工作路径设定到本地保存了vehicles.csv的 ...
- linux wdcp安装
wdCP是WDlinux Control Panel的简称,是一套通过WEB控制和管理服务器的Linux服务器管理系统以及虚拟主机管理系统,旨在易于使用Linux系统做为我们的网站服务器系统,以及平时 ...
- Android零散知识点积累
本文仅在记录android开发中遇到的零散知识点,会不断更新... 目录 .隐藏系统标题栏 .图片尺寸及屏幕密度 3.获取顶部状态栏高度 1.隐藏系统标题栏 1)在资源文件styles.xml中定义样 ...
- JavaScript Promise异步实现章节的下载显示
Links: JavaScript Promise:简介 1.一章一章顺序地下载显示下载显示 使用Array.reduce()和Promise.resolve()将各章的下载及显示作为整体串联起来. ...
- Eclipse 输出的文本乱码
Version: Mars.2 Release (4.5.2)Build id: 20160218-0600 在使用时,发现文本编辑器中的文字出现了乱码.然后在项目的Properties->&g ...
- OpenGL学习进程(3)第一课:初始化窗体
本节是OpenGL学习的第一个课时,下面介绍如何初始化一个窗体: (1)显示一个有蓝色背景的窗体: #include <GL/glut.h> #include <st ...
- uCOS-II的学习笔记(共九期)和例子(共六个)
源:uCOS-II的学习笔记(共九期)和例子(共六个) 第一篇 :学习UCOS前的准备工作http://blog.sina.com.cn/s/blog_98ee3a930100w0eu.html 第二 ...
- java 跨数据库导入大数据
java 跨数据库导入大数据 /** * java程序跨服务器跨数据库批量导入导出百万级数据 * @param args * @throws Exception */ public static vo ...
- avaweb学习总结(八)——HttpServletResponse对象(二)
一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,
- Ubuntu 12.04下安装OpenCV 2.4.2
http://sourceforge.net/projects/opencvlibrary/files/ Ubuntu 12.04下安装OpenCV 2.4.2 http://blog.csdn.ne ...