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

 

那么,在python3中,就有re模块来表示正则相关啦~


在python3中,我们最最经常用到的就是re.match()函数。

import re
result = re.match(正则表达式,要匹配的字符串)
                                          
result.group()    #用来返回匹配的整个表达式的字符串

re.match()函数通俗来说就是从正则表达式的第一个字符串开始匹配,直到正则结束,如果该字符串完全匹配则返回True,否则则返回False。

result.group() 则是用来返回匹配的整个表达式的字符串 。

举个栗子 :

python 正则表达式循环匹配 python3 正则匹配_下划线

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()   #不建议将两条语句合在一起写哦,博主小姐姐比较懒,少写一行是一行~

呐呐呐,小姐姐已经运行好输出结果了!(在下面哦)

python 正则表达式循环匹配 python3 正则匹配_python 正则表达式循环匹配_02

当当当当~我们的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()

python 正则表达式循环匹配 python3 正则匹配_正则表达式_03


(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()

 

python 正则表达式循环匹配 python3 正则匹配_字符串_04


(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()

python 正则表达式循环匹配 python3 正则匹配_下划线_05

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

 

希望本文可以帮到大家~

如有错误欢迎指正~