首先要说一下什么是正则表达式 :通俗一点来讲,正则表达式就是一种字符串匹配的方式罢了,我们平时经常会用到两个字符串比较,比如说像新用户注册,我们输入注册的新信息时经常会有书写不规范的时候,那么 “正则” 就是用来约束我们的书写规范。
那么,在python3中,就有re模块来表示正则相关啦~
在python3中,我们最最经常用到的就是re.match()函数。
import re
result = re.match(正则表达式,要匹配的字符串)
result.group() #用来返回匹配的整个表达式的字符串
re.match()函数通俗来说就是从正则表达式的第一个字符串开始匹配,直到正则结束,如果该字符串完全匹配则返回True,否则则返回False。
result.group() 则是用来返回匹配的整个表达式的字符串 。
举个栗子 :re.match()的第一个参数是我们要匹配的字符串
第一个我们用hello来匹配hello world,有一个返回值证明匹配成功
当我们用hello来匹配Hello world的时候,发现没有返回值,证明匹配不成功
当我们用[Hh]ello world来匹配时,H可以用大写或小写均会有返回值,均可匹配成功
了解了re.match()之后,那么就是正则表达式的书写啦
这里我们首先要说明一下正则规则 :
转义字符 | 解释 |
\d | 匹配任意数字,等价于 [0-9] |
\D | 匹配任意非数字 |
\s | 匹配任意空白字符,等价于 [\t\n\r\f] |
\S | 匹配任意非空字符 |
\w | 匹配字母数字及下划线 |
\W | 匹配非字母数字及下划线 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的末尾 |
. | 匹配任意除了换行符的字符 |
* | 匹配0个或多个的表达式 |
+ | 匹配1个或多个的表达式 |
? | 匹配0个或1个由前面的正则表达式定义的片段 |
a|b | 匹配a或b |
具体这些规则怎么用呢? ——当然是用来正则匹配呀~ 话不多说上栗子:
例如,\d用于匹配任意数字,那么我如果想匹配单个数字应该怎么写呢?
import re
re.match(r"[1-9]?%d","1").group() #不建议将两条语句合在一起写哦,博主小姐姐比较懒,少写一行是一行~
呐呐呐,小姐姐已经运行好输出结果了!(在下面哦)
当当当当~我们的1就这样输出出来了,什么?怎么是个 '1' 这个鬼东西?没问题,用int强制转换一下就好啦!这就是与hello world等价的正则表达式啦,小可爱们也可以根据上面表格多多联系一些更难一点的,比如说......
咳咳:(1)判断输入的手机号是否规范(规定只有 13x )
(2)判断输入的用户名是否规范(允许字母、下划线开头,由字母数字下划线构成,6~16位)
(3)判断输入的邮箱是否符合正确的邮箱格式(以163.com为例)
宝贝们先自己练习哈,不许下翻偷看答案哦
|
|
|
|
|
|
|
|
|
|
|
*********
*******
*****
***
*
那么我要公布答案啦:
(1)判断输入的手机号是否规范
首先,手机号呢纯数字,11位,我规定了只以13*开头,那么只需要判断13后面是不是9位数字就可以啦,难度不大,代码如下~
import re
def phone():
n=input()
if re.match(r"13\d{9}",n):
print("True")
else:
print("False")
if __name__ == '__main__':
phone()
(2)判断输入的用户名是否规范(允许字母、下划线开头,由字母数字下划线构成,6~16位)
没什么好解释的,条件都已经列在题干里了,相信宝宝们也可以摸索着就写出来了,直接上码!
import re
def UserName():
n=input()
if re.match(r"^[a-zA-Z][a-zA-Z0-9]{5,15}$",n):
print("True")
else:
print("False")
if __name__ == '__main__':
UserName()
(3)判断输入的邮箱是否符合正确的邮箱格式(以163.com为例)
最后一个就是邮箱的判断了,前面字母,后面加上@163.com,以$作为结束符,就OK啦,代码奉上:
import re
def CheckEmail():
n=input()
if re.match(r"[0-9a-zA-Z_]{0,19}@163.com$",n):
print("True")
else:
print("False")
if __name__ == '__main__':
CheckEmail()
掌握了上面这些,宝宝们对正则表达式是不是有更深的了解了呢?如果想深入学习正则表达式请好好继续学习哦~
希望本文可以帮到大家~
如有错误欢迎指正~