Python正则表达式的简单应用和示例演示
前一阵子小编给大家连续分享了十篇关于Python正则表达式基础的文章,感兴趣的小伙伴可以点击链接进去查看。今天小编给大家分享的是Python正则表达式的简单应用和示例演示,将前面学习的Python正则表达式做一个概括。
下面的栗子是用于提取高考日期,一般来说,我们填写日期都会写2018年6月7日,但是也有很多人会写成2018/6/7、2018-6-7、2018-06-07等,还有的人可能会写为2018-06或者2018年6月。总之对日期的写法五花八门,那么我们现在需要写一个正则表达式来统一匹配这么多的情况,应该如何来处理呢?具体的教程如下所示。
1、首先我们先写个简单的正则表达式,然后一步步经过测试,慢慢达到匹配的效果。
这个正则表达式比较复杂,一下子可能看不懂,小编带大家一层一层的进行理解。
2、我们从左到右对正则表达式进行分析,首先“.*”代表的是任意字符出现任意多次,对应原始字符中的“XXX”;“高考时间是”没有什么特别的,就是对应原始字符串中的“高考时间是”。
3、接下来是“d{4}”代表的是连续出现4个数字,对应原始字符串中的年份“2018”;“[年/-]”表示取“年”、“/”、“-”中的任意一个字符,对应原始字符串中年份“2018”之后所连接的下一个字符。
4、继续往后是“d{1,2}”代表的是连续出现1个到2个数字,对应原始字符串中的月份“6”或者“06”;“[月/-]”表示取“月”、“/”、“-”中的任意一个字符,对应原始字符串中月份“6”或者“06”之后所连接的下一个字符,同年份的理解如出一辙。
5、接下来就复杂一些了,其中“d{1,2}”的理解同月份的理解一致,关键是关于“日”的提取主要需要注意有的字符串有日期,有的字符串并没有日期,所以需要特殊字符“|”来表示“或”的关系,并且用特殊字符“$”来表示结束。
6、理解了上述关系之后,接下来依次验证六个原始字符串,看看是否能匹配成功。下图是原始字符串string2的匹配情况。
发现可以匹配得上。
7、下图是原始字符串string3的匹配情况。
发现可以匹配得上。
8、下图是原始字符串string4的匹配情况。
发现可以匹配得上。
9、下图是原始字符串string5的匹配情况。
发现这种模式并不能匹配上,这是什么原因呢?
10、原因是月份“d{1,2}”后面限定要跟“[月/-]”,而原始字符串string5的时间为“2018-06”,其后面没有任何的字符就结束了,也匹配模式搭配不上,因此在这里需要改进一下。
需要利用特殊字符“|”和特殊字符“$”,做一个“或”的选择,如上图所示,之后就可以匹配成功了。
当然也可以直接把“[月/-]”一起加入到第二个括号里,如下图所示,这种方式更为简便。
11、下图是原始字符串string6的匹配情况。
可以看到此时可以成功匹配。
经过测试可以发现,此时改进后的字符串对6种不同日期的字符串都可以成功匹配。小伙伴们,有没有感受到正则表达式的魔力呢?
Python正则表达式的简单应用和示例演示的更多相关文章
- python进程间数据不共享(示例演示)
import multiprocessing data_list = [] def task(arg): data_list.append(arg) print(data_list) def run( ...
- 学会python正则表达式就是这么简单
一前言 本篇文章带大家快速入门正则表达式的使用,正则表达式的规则不仅适用python语言,基本大多数编程语言都适用,在日常使用中极为广泛,读者们有必要学好正则表达式.看完这篇文章,读者们要理解什么是正 ...
- Python正则表达式就是这么简单【新手必学】
一前言本篇文章带大家快速入门正则表达式的使用,正则表达式的规则不仅适用python语言,基本大多数编程语言都适用,在日常使用中极为广泛,读者们有必要学好正则表达式.看完这篇文章,读者们要理解什么是正则 ...
- C#调用Python脚本的简单示例
C#调用Python脚本的简单示例 分类:Python (2311) (0) 举报 收藏 IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Huguni ...
- python正则表达式re模块详细介绍--转载
本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一样漂亮. 正则表达式使用反斜杆( ...
- python 正则表达式操作
正则表达式操作 本模块提供了类似于Perl的正则表达式匹配操作.要匹配的模式和字符串可以是Unicode字符串以及8位字符串. 正则表达式使用反斜杠字符('\')来表示特殊的形式或者来允许使用特殊的 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 比较详细Python正则表达式操作指南(re使用)
比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...
- Python 正则表达式-OK
Python正则表达式入门 一. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分. 正则表达式是用于处理字符串的强大工具, 拥有自己独特的语法以及一个独立的处理引擎, 效率上 ...
随机推荐
- Linux学习总结(14)——Linux权限控制
linux中,权限的学习是必不可少的,不论是作为一名运维工程师或者是单一的管理者,学习好linux中的权限控制,你就可以保护好自己的隐私同时规划好你所管理的一切. 权限的学习是很多的,不要认为自己已经 ...
- [转载]深入Java单例模式
在GoF的23种设计模式中,单例模式是比较简单的一种.然而,有时候越是简单的东西越容易出现问题.下面就单例设计模式详细的探讨一下. 所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在 ...
- SPOJ 962 Intergalactic Map
Intergalactic Map Time Limit: 6000ms Memory Limit: 262144KB This problem will be judged on SPOJ. Ori ...
- Tsinsen A1303. tree(伍一鸣) LCT
LCT的各种操作... . cut link add mul size rev query 写的效率不够高... BZOJ上似乎TLE. ... A1303. tree(伍一鸣) 时间限制:2.5s ...
- E-UTRA channel bandwidths per operating band (36.101)
E-UTRA channel bandwidths per operating band (36.101) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/ ...
- vim 插件之vim-trailing-whitespace
vim-trailing-whitespace 这个插件是快速去掉文章行末的空格 地址 http://github.com/bronson/vim-trailing-whitespace 如果你想要使 ...
- Python多版本情况下四种快速进入交互式命令行的操作技巧
因为工作需求或者学习需要等原因,部分小伙伴的电脑中同时安装了Python2和Python3,相信在Python多版本的切换中常常会遇到Python傻傻分不清楚的情况,今天小编整理了四个操作技巧,以帮助 ...
- [JSOI2008]火星人 hash+splay
题目描述: 现在,火星人定义了一个函数 LCQ(x, y)LCQ(x,y),表示:该字符串中第 xx 个字符开始的字串,与该字符串中第 yy 个字符开始的字串,两个字串的公共前缀的长度.比方说,LCQ ...
- 事件代理(event的target属性)
event的target属性 一个题:请通过事件代理实现当点击每一个li标签,弹出相应li标签内的内容 Event对象提供了一个属性叫target,可以返回事件的目标节点,我们称为事件源,也就是说,t ...
- Studio3T 破解,无需命令计划任务
最近项目中使用到了MongoDB,苦于命令行不好操作,所以就寻觅了一下MongDB的GUI管理工具,最终找到了Studio3T,功能非常强大,但是苦于只有评估版本30天,最可气的是一时手贱,修改了系统 ...