前言
规则表达式(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)