标签:order 逻辑 数字 代码 item port http 很多 测试
什么是正则表达式?
正则表达式,又称规则表达式(英文:Regular Expression,在代码中简写为regex,regexp或re),计算机科学的一个概念,正则表达式通常被用来检索、替换那些符合某个规则的文本。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符,及这些特定字符的组合,组成一个‘规则字符串’,这个‘规则字符串’用来表达对字符串一种过滤逻辑。更多关于正则表达式介绍,点击这里进入百度百科。
怎么使用正则表达式?
首先,需要导入re模块,因为关于正则表达式处理的功能函数都在这个模块内
import re
re模块共分为5个功能函数:
正则表达式符号:
‘.‘ | 默认匹配除了\n以外的任意一个字符 |
‘^‘ | 匹配字符开头 |
‘$‘ | 匹配字符结尾 |
‘*‘ | 匹配*号前的字符0次或者多次 |
‘+‘ | 匹配前一个字符1次或多次 |
‘?‘ | 匹配前一个字符1次或0次 |
‘{m}‘ | 匹配前一个字符m次 |
‘{n,m}‘ | 匹配前一个字符n到m次 |
‘|‘ | 匹配|左或|右的字符 |
‘(...)‘ | 分组匹配 |
‘\A‘ | 只从字符开头匹配 |
‘\Z‘ | 匹配字符结尾,和$一样 |
‘\d‘ | 匹配0到9的数字 |
‘\D‘ | 匹配非数字 |
‘\w‘ | 匹配[A-Za-z0-9] |
‘\W‘ | 匹配非[A-Za-z0-9] |
‘s‘ | 匹配空白字符 |
基础的说完了,下面看看如何使用强大的正则来处理字符串吧
比如说,现在一顿学生的学号和姓名在一块,我现在需要把他们的学号取出来如何去呢?(注:学号是12位的,都是数字)
逻辑分析:上面说的学号是12位的,每个学生的姓名都是英文字母,结合正则表达式字符来解释,取出姓名就可以写成[a-z]+,取出学号可以写成[0-9]{12},因为匹配整个字符串,所以要使用findall函数
下面我们使用代码来测试下:
1 import re 2 3 z = ‘[0-9]{12}‘ 4 z1 = ‘[a-z]+‘ 5 str = ‘xiaoming202201056234xiaogang201023415674xiaoli222278564356‘ 6 s1 = re.findall(z1,str) 7 s= re.findall(z,str) 8 print(s1) 9 print(s)
运行结果
[‘xiaoming‘, ‘xiaogang‘, ‘xiaoli‘] [‘202201056234‘, ‘201023415674‘, ‘222278564356‘]
这只是一些简单的例子,对于正则表达式需要不断的练习,网上有很多的在线正则表达式测试的连接,可以去学习学习
sub替换匹配到的字符串:这里是把匹配到的学号替换成1212
1 import re 2 3 z = ‘[0-9]{12}‘ 4 str = ‘xiaoming202201056234xiaogang201023415674xiaoli222278564356‘ 5 s= re.sub(z,‘1212‘,str) 6 print(s)
运行结果
xiaoming1212xiaogang1212xiaoli1212
通过split来分割字符串:通过学号来分割字符串
1 import re 2 3 z = ‘[0-9]{12}‘ 4 str = ‘xiaoming202201056234xiaogang201023415674xiaoli222278564356‘ 5 s= re.split(z,str) 6 print(s)
运行结果
[‘xiaoming‘, ‘xiaogang‘, ‘xiaoli‘, ‘‘]
这里的结果为什么会在最后多处一个‘’。以为我们分割的时候在最后面的字符串是一个学号,所以说会多出来一个
这里我下面写几个正则表达式的匹配规则,大家结合上面的正则表达式符号看看能不能理解为什么这样写
匹配身份证号:^[1-9][0-7]\d{4}((19\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(19\d{2}(0[13578]|1[02])31)|(19\d{2}02(0[1-9]|1\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))\d{3}(\d|X|x)?$。这里知识匹配的格式是否正确
匹配邮箱:^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$
匹配中文:[\u4e00-\u9fa5]+
标签:order 逻辑 数字 代码 item port http 很多 测试
原文地址:https://www.cnblogs.com/mCarrYoung/p/9977073.html