博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习-37.Python中的正则表达式
阅读量:5064 次
发布时间:2019-06-12

本文共 1538 字,大约阅读时间需要 5 分钟。

作为一门现代语言,正则表达式是必不可缺的,在Python中,正则表达式位于re模块。

1 import re

这里不说正则表达式怎样去匹配,例如\d代表数字,^代表开头(也代表非,例如^a-z则不匹配任何小写字符),$代表结尾,这些百科或者其他书籍都有。

例子一,字符串中是否包含数字:

1 import re2 userinput = input("please input test string:")3 if re.match(r'\d',userinput):4     print('contain number')5 else:6     print('no number in input string')

假如输入的不包含数字的话,则re.match方法返回None,而含数字的话,则会返回一个Match对象。

 

例子二,分割字符串:

1 import re2 userinput = input("please input test string:")3 temp = re.split(r'\s+',userinput)4 print(temp)

\s代表任意空白字符(指空格、Tab等等的空白字符),+号表示1个或多个。那么这段代码的作用就是按照空白分割字符。例如字符串"a   b       dc"得到的将会是['a','b','dc']的列表。普通的字符串split函数要做到此功能则很难做到。

 

例子三,分组:

有时候,我们需要提取字符串中的一些部分,例如电话号码,由三位或四位的区号和八位的电话号码组成。

1 import re2 userinput = input("please input test string:")3 m = re.match(r'(\d{3,4})-(\d{8})',userinput)4 if m:5     print('区号:' + m.group(1))6     print('号码:' + m.group(2))7 else:8     print('格式错误')

分组使用(),这是正则表达式的基本。m.group从0开始计数,而0为输入的字符串。

 

例子四,贪婪匹配:

1 import re2 userinput = input("please input test string:")3 m = re.match(r'^(\d+)(0*)$',userinput)4 if m:5     print(m.groups())6 else:7     print('格式错误')

输入102500,我们得到的是('102500','')。

而我们想要的结果是('1025','00')。这里就需要使用非贪婪匹配了。因为Python里正则表达式是默认使用贪婪模式的(C#中也是)。

修改代码如下:

1 import re2 userinput = input("please input test string:")3 m = re.match(r'^(\d+?)(0*)$',userinput)4 if m:5     print(m.groups())6 else:7     print('格式错误')

即在\d+后加上一个?号。这样结果就会如我们所想的一样。

注意的是,非贪婪模式比贪婪模式效率要差,因此非到贪婪模式匹配不了就不要使用非贪婪模式。

 

例子五,正则表达式预编译:

使用re.compile方法。在多处需要使用到同一个正则表达式的时候,我们应该预编译该正则表达式,然后直接使用该方法返回的对象。

转载于:https://www.cnblogs.com/h82258652/p/4000970.html

你可能感兴趣的文章
Android TextView加上阴影效果
查看>>
《梦断代码》读书笔记(三)
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
AngularJS学习篇(一)
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
css3动画——基本准则
查看>>
输入月份和日期,得出是今年第几天
查看>>
pig自定义UDF
查看>>
Kubernetes 运维学习笔记
查看>>
spring security 11种过滤器介绍
查看>>
代码实现导航栏分割线
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
【AS3代码】播放FLV视频流的三步骤!
查看>>
枚举的使用
查看>>
luogu4849 寻找宝藏 (cdq分治+dp)
查看>>
日志框架--(一)基础篇
查看>>
关于源程序到可运行程序的过程
查看>>
转载:mysql数据库密码忘记找回方法
查看>>
scratch少儿编程第一季——06、人在江湖混,没有背景怎么行。
查看>>