python之(re)正则表达式上
python正则表达式知识预备
正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表示正则表达式中的" \ ",因为正则表达式中如果要匹配" \ ",需要用\来转义,变成" \\ ",而Python语法中又需要对字符串中每一个\进行转义,所以就变成了" \\\\ "。
上面的写法是不是觉得很麻烦,为了使正则表达式具有更好的可读性,Python特别设计了原始字符串(raw string),需要提醒你的是,在写文件路径的时候就不要使用raw string了,这里存在陷阱。raw string就是用'r'作为字符串的前缀,如 r"\n":表示两个字符"\"和"n",而不是换行符了。Python中写正则表达式时推荐使用这种形式。
问题:如何匹配到‘\com’
# r9 = re.search('\\\\', 'www.run\comoob')
# print(r9) #匹配到‘\’ '\\\\' python 将其翻译为'\\' re 模块将其编译为'\'
上面太麻烦了,明显不符合实际操作,看下面的:
r10 = re.search(r'\\com', 'www.run\comoob') #加r , 表示python 不翻译,re 翻译
print(r10)
#f = open("c:\abc.txt") #错误 应该是f = open("c:\\abc.txt")
r7 = re.search(r'\\com', 'www.run\comoob') #注意:匹配到'\com' 翻译到屏幕是'\\com'
print(r7)
学习正则表达式
接下来系统学习正则表达式,文章有点长,希望不懂的同学可以耐心看下去,我会多举例的
先大致看下,后面会举例:
字符:
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
次数:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
正则表达式本身就是小型编程语言,使用之前肯定要先导入啦,下面实例默认都是导入的。 一、了解findout,及字符
1. findout 把匹配结果通过列表返回
r =re.findall('zcl', 'fzclfjfrijzclfeizcfj')
print(r) #['zcl', 'zcl']
2. . 匹配到除换行符以外的任一个字符
r1 =re.findall('z.l', 'fzolfjfrijzclfeizcfj')
print(r1) #['zol', 'zcl']
r1 =re.findall('z.l', 'fz\nlfjfrijzclfeizcfj')
print(r1) #['zcl']
3. ^ (shift+6)区配到以 xx字符开头
r2 =re.findall('^z.l', 'fz\nlfjfrijzclfeizcfj')
print(r2) #[]
r3 =re.findall('^z.l', 'zcllfz\nlfjfrijzclfeizcfj')
print(r3) #['zcl']
4. $ 匹配到以xx结束的字符
r4 =re.findall('z.l$', 'zcllfz\nlfjfrijzclfeizcfj')
print(r4) #[]
r5 =re.findall('z.l$', 'zcllfz\nlfjfrijzclfeizcfjzcl')
print(r5) #['zcl']
5. * 区配*前面的字符0到多次
+ 重复一次或更多次
r6 =re.findall('z.*l', 'zcgfchthllfz\nlfjfrijzclfeizcfjzcl')
print(r6) #['zcgfchthll', 'zclfeizcfjzcl'] r7 =re.findall('z.+l', 'zcgfchthfz\nlfjfrijzcfeizcfjzc')
print(r7) #[]
6. {n} 重复n次
{n,m} 重复n到m次
{n,} 重复n次或更多次
r8 = re.findall('zc{3}l', 'zccclgfchthfz\nlfjfrijzcfeizcfjzc')
print(r8) #['zcccl']
7. [bc] 匹配b或c
r9 = re.findall('a[bd]c', 'dfjabdcdjfabcdf')
print(r9)
8. [a-z] 匹配a至z任意一个
r9 = re.findall('a[a-z]c', 'dfjabdcdjfatcdf')
print(r9) #['atc']
9. [] 里面仍有功能有三个: [a-z] [\d]区配数字 [^] 非
r10 = re.findall('a[^f]d', "afd")
print(r10) #[]
r11 = re.findall('a[^f]d', "ard")
print(r11) #['ard']
r12 = re.findall(r'a\df', "a8f")
print(r12) #['a8f']
欢迎转发!
This is zcl‘s article! Thanks for your support!
文章出处:http://www.cnblogs.com/0zcl
作者:zcl
python之(re)正则表达式上的更多相关文章
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- python基础之正则表达式
正则表达式语法 正则表达式 (或 RE) 指定一组字符串匹配它;在此模块中的功能让您检查一下,如果一个特定的字符串匹配给定的正则表达式 (或给定的正则表达式匹配特定的字符串,可归结为同一件事). 正则 ...
- Python::re 模块 -- 在Python中使用正则表达式
前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...
- python的re正则表达式模块学习
python中re模块的用法 Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工 ...
- Python基础之 正则表达式指南
本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...
- 使用python爬取MedSci上的期刊信息
使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn ...
- Python系列之正则表达式详解
Python 正则表达式模块 (re) 简介 Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用 ...
- 【转载】Python中的正则表达式教程
本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ...
- Python中的正则表达式教程
本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ...
随机推荐
- 使用wireshark抓包分析浏览器无法建立WebSocket连接的问题(server为Alchemy WebSockets组件)
工作时使用了Websocket技术,在使用的过程中发现,浏览器(Chrome)升级后可能会导致Websocket不可用,更换浏览器后可以正常使用. 近日偶尔一次在本地调试,发现使用相同版本的Chrom ...
- 查看nginx配置文件路径
进入nginx安装目录(我的是/usr/local/nginx-1.7.8/) 进入sbin目录,输入 ./nginx -t查看nginx配置文件路径以及该文件语法是否正确 ./nginx -v查看n ...
- hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存
二级缓存(sessionFactory): Hibernate的二级缓存由SessionFactory对象管理,是应用级别的缓存.它可以缓存整个应用的持久化对象,所以又称为“SessionFactor ...
- MyEclipse打不开jsp文件 报错“Failed to create the part's controls"
本来写好了一套网站html代码,需要移植到myeclipse的jsp页面中,当复制代码完毕后,也是可以运行的并不报错,但一直有弹框提示有空指针,当关闭页面后再次打开就歇菜了,提示 我预感到这可能是my ...
- 微信小程序小技巧系列《二》show内容展示,上传文件编码问题
作者:gou-tian 来自:github show内容展示 尝试用微信小程序的template组件实现.同时,尝试页面间转跳时传参,在目标页面引入模板文件实现 写的更少,做的更多 篇幅有限详细代码此 ...
- AnagularJs之directive
前言: 昨日周六,再登梧桐山.六点半,起.未到顶,雨纷飞.冒雨行,终封顶,只为合照一张.五点半,下山行.聆听大自然的律动,双腿随其自然而颤抖!今早起,我的双腿犹如叛逆期的少年,或如领家的孩童,遂决定今 ...
- linux源码分析(五)-start_kernel
前置:这里使用的linux版本是4.8,x86体系. local_irq_disable(); 这个函数是做了关闭中断操作.和后面的local_irq_enable相对应.说明启动的下面函数是不允许被 ...
- 2.简单的Code First例子(EF Code-First系列)
现在假想,我们想要为讴歌学校创建一个应用程序,这个程序需要能够来添加或者更新学生,分数,教师还有课程信息. 代替之前我们的做法:先是创建数据库,现在我们不这么做,我们先来创建领域类,首先我来创建两个简 ...
- MyEclipse 2014 GA 和 MyEclipse 2015 CI 和 Eclipse Luna 最新最全下载地址
官方下载地址: Eclipse 标准版 x86 http://mirror.hust.edu.cn/eclipse//technology/epp/downloads/release/luna/R/e ...
- 增加删除字段修改字段名,修改表结构,非常用SQL语句技巧总结
1.为数据表添加一个新字段 Alter TABLE [dbo].[CustomerBackupConfig] Add [Stamp] [timestamp] NULL GO 2.为数据表添加两个新字段 ...