正则表达式


前言

规则表达式(regular expression)

是一个对象,叫正则对象
是一个强大的字符串匹配和处理工具(除了处理字符串,其他的什么都做不了)
它是火星文,一般人很难理解(程序界的摩斯码)
它还是一种思维方式
容易学,但是也非常容易忘记
我的感觉就是它是一套创造者创造的规则,就像游戏规则一样

一、正则表达式

正则表达式这套规则,不止可以用于前端还可以用于后端以及各种不同的语言。在python中进行正则表达式的时候首先要导入re模块,:import re,采用其中的match函数进行匹配操作,如果匹配到数据的话可使用group方法提取数据。它能迅速查找到某个确切的信息,比如以hello开头的语句、文章中所含的所有163的邮箱等。

二、匹配任意1字符

1.匹配中列举的字符

\d:匹配数字0-9
\D:匹配非数字
\s:匹配空白
\S:匹配非空白
\w:匹配单词字符a-zA-Z0-9
\W:匹配非单词字符
match:自带判断开头,不匹配结尾。
^:匹配字符串开头,$匹配字符串结尾。

**import re
#re.match(正则表达式 ,需要处理的字符串)
h=re.match(r"hello","hello world")
print(h)#有返回值代表需要处理的字符串中有满足正则表达式条件的部分内容
m=re.match(r"hello","Hello world")
print(m)#没有返回值代表没有,也可以认为是用户输入的数据不符合规范
n=re.match(r"[hH]ello","hello world")
o=re.match(r"[hH]ello","Hello world")
print(n,o)#用[]可以兼容大小写
print(n.group())#提出n中所含的符合规范的数据
p=re.match(r"Hello[12345678]","Hello8")#方括号里面的代表后缀范围1-8,也就是说后面如果是Hello9就会报错
print(p.group())
q=re.match(r"Hello[1-8]","Hello8")#效果同上
print(q.group())
q=re.match(r"Hello[1-36-8]","Hello8")#效果同上唯一不同是后缀为4,5都无输出
print(q.group())**

在这里插入图片描述

2.判断变量名是否符合要求

import re


def main():
    names=["age","_age","1age","age1","a_age","age_1_","age!","a#123"]
    for name in names:
        ret=re.match(r"^[a-zA-Z_][a-zA-Z0-9_]*$",name)
        if ret:
            print("变量名:%s符合要求..."%name)
        else:
            print("变量名:%s不符合要求..."%name)

if __name__=="__main__":
        main()

在这里插入图片描述

3.简单案例,判断email输入是否符合规范

import re


def main():
 while 1:
    email=input("请输入您的邮箱:")
    ret=re.match(r"^[a-zA-Z_0-9]{4,20}@163\.com$",email)
    #如果在正则表达式中要用到某些特殊字符比如.或者?等,只需要在其前面添加一个反斜杠\进行转义
    if ret:
        print("%s符合要求..."%email)
    else:
        print("%s不符合要求..."%email)

if __name__=="__main__":
    main()

在这里插入图片描述

4.re模块的高级用法:search,sub等

当不是从开头进行提取,只需要提取就行的时候可采用search函数

import re
ret=re.search(r"\d+","阅读次数为999")
print(ret.group())
ret1=re.findall(r"\d+","python=999,c=12907,c++=99765")
print(ret1)#此时不需要用group
ret2=re.sub(r"\d+",'998',"python=75479")#替换功能与支持函数调用
print(ret2)#此时不需要用group
def add(temp):
    strNum=temp.group()
    num=int(strNum)+1
    return str(num)
ret3=re.sub(r"\d+",add,"python=997")
print(ret3)
ret4=re.sub(r"\d+",add,"python=99")
print(ret4)
#split切割
ret5=re.split(r":| ","info:xixi shaicbskakj66879")#按照冒号和空格符号切割
print(ret5)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淅淅同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值