基础 Python3 正则表达式

首先要说一下什么是正则表达式 :通俗一点来讲,正则表达式就是一种字符串匹配的方式罢了,我们平时经常会用到两个字符串比较,比如说像新用户注册,我们输入注册的新信息时经常会有书写不规范的时候,那么 “正则” 就是用来约束我们的书写规范。

 

那么,在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()

掌握了上面这些,宝宝们对正则表达式是不是有更深的了解了呢?如果想深入学习正则表达式请好好继续学习哦~

 

希望本文可以帮到大家~

如有错误欢迎指正~

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值