初识 Python 正则表达式

正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。
python 自 1.5 版本起增加了re 模块,它提供 perl 风格的正则表达式模式。re 模块使 python 语言拥有全部的正则表达式功能。
下面通过实例,一步一步来初步认识正则表达式。
比如在一段字符串中寻找是否含有某个字符或某些字符,通常我们使用内置函数来实现,如下:
# 设定一个常量a = '两点水|twowater|liangdianshui|草根程序员|readingwithu'# 判断是否有 “两点水” 这个字符串,使用 py 自带函数print('是否含有“两点水”这个字符串:{0}'.format(a.index('两点水') > -1))print('是否含有“两点水”这个字符串:{0}'.format('两点水' in a)) 输出的结果如下:
是否含有“两点水”这个字符串:true是否含有“两点水”这个字符串:true 那么,如果使用正则表达式呢?
刚刚提到过,python 给我们提供了 re 模块来实现正则表达式的所有功能,那么我们先使用其中的一个函数:
re.findall(pattern, string[, flags]) 该函数实现了在字符串中找到正则表达式所匹配的所有子串,并组成一个列表返回,具体操作如下:
import re# 设定一个常量a = '两点水|twowater|liangdianshui|草根程序员|readingwithu'# 正则表达式findall = re.findall('两点水', a)print(findall)if len(findall) > 0: print('a 含有“两点水”这个字符串')else: print('a 不含有“两点水”这个字符串') 输出的结果:
['两点水']a 含有“两点水”这个字符串 从输出结果可以看到,可以实现和内置函数一样的功能,可是在这里也要强调一点,上面这个例子只是方便我们理解正则表达式,这个正则表达式的写法是毫无意义的。为什么这样说呢?
因为用 python 自带函数就能解决的问题,我们就没必要使用正则表达式了,这样做多此一举。而且上面例子中的正则表达式设置成为了一个常量,并不是一个正则表达式的规则,正则表达式的灵魂在于规则,所以这样做意义不大。
那么正则表达式的规则怎么写呢?先不急,我们一步一步来,先来一个简单的,找出字符串中的所有小写字母。首先我们在 findall 函数中第一个参数写正则表达式的规则,其中 [a-z] 就是匹配任何小写字母,第二个参数只要填写要匹配的字符串就行了。具体如下:
import re# 设定一个常量a = '两点水|twowater|liangdianshui|草根程序员|readingwithu'# 选择 a 里面的所有小写英文字母re_findall = re.findall('[a-z]', a)print(re_findall) 输出的结果:
['t', 'w', 'o', 'w', 'a', 't', 'e', 'r', 'l', 'i', 'a', 'n', 'g', 'd', 'i', 'a', 'n', 's', 'h', 'u', 'i', 'e', 'a', 'd', 'i', 'n', 'g', 'i', 't', 'h'] 这样我们就拿到了字符串中的所有小写字母了。


人工智能之机器学习与深度学习介绍
变压器局部放电的产生及预防
巴克莱银行试水英国无线支付领域
亚洲如何主导工业机器人的应用
物联网给海上油气检测带来了什么改变
初识 Python 正则表达式
2020年最佳供应链企业榜单出炉,阿里巴巴成入选的唯一中企
MOMAP对azulene的S1→S0的辐射速率和内转换速率的计算结构优化
iPhone8究极曝光,竟然这么丑?
润欣科技超低功耗MCU+BLE方案分享
浅谈并购对嵌入式处理器发展产生的深远影响
专利书显示苹果公司可能要开发双折叠屏幕:可折成“S”形和“G”形
中国电信移动用户规模已达到了3.36亿户4G用户渗透率达到了83.8%
两款CD4069构成的简易振荡电路详解
融合云计算技术的楼宇对讲系统实现智能互联
单片机控制的多参数实时采集与处理系统设计
什么是真正的全能旗舰?Find X3 Pro告诉你答案
自动浇水机的制作方法
我国首座兆瓦级太阳能塔式热发电站发电成功
cx20106a引脚图及功能