概念
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
re模块操作
在python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re
re模块的使用过程
# 导入re模块
import re
# 使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)
#如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()
re模块实例
import re
result = re.match("itcast","itcast.cn")
print(result.group())
运行结果为:
itcast
匹配单个字符
相关格式:
示例:
import re
ret = re.match("速度与激情\d",“速度与激情1”)
print(ret.group())
ret = re.match("速度与激情[1-8]","速度与激情2") # 1~8均可
print(ret.group())
ret = re.match("速度与激情[1-36-8]","速度与激情6") # 1-3 6-8
print(ret.group())
ret = re.match("速度与激情[1-8a-zA-Z]","速度与激情a") # 1-8 a-z A-Z
print(ret.group())
ret = re.match("速度与激情\s\d""速度与激情 a")
print(ret.group()) # 输出:速度与激情 a
匹配多个字符
相关格式
import re
ret = re.match(r"速度与激情\d{1,3}","速度与激情123")
print(ret.group())
ret = re.match(r"021-?\d{8}", "02112345678")
print(ret.group())
匹配开头结尾
1 import re
2
3
4 def main():
5 names = ["age","_age","1age","age1","a_age","age_1_","aeg!","a#123","_______"]
6 for name in names:
7 ret = re.match(r"^[a-zA-Z_][a-zA-Z0-0-9_]*$",name)
8 if ret:
9 print("变量名:%s 符合要求...通过正则匹配出来的数据是:%s" % (name,ret .group()))
10 else:
11
12 print("变量名:%s 不符合要求..." % name)
13
14
15 if __name__ == "__main__":
16 main()
输出结果:
小练习:
匹配出163或者126的邮箱地址,且@符号之前有4到20位,可以是数字,大小写字母,下划线,例如hello@163.com
1 import re
2
3
4 def main():
5 email = input("请输入邮箱地址:")
6 # 如果在正则表达式中需要用到某些普通字符,比如 . ?等,仅需要在他们前面添加一个 反斜> 杠进行转义
7 ret = re.match(r"^[a-zA-Z0-9_]{4,20}@(163|126)\.com$", email)
8 if ret:
9 print("输入正确,正则表达式匹配的是:%s" % ret.group())
10 else:
11 print("输入错误!请重新输入")
12
13
14
15 if __name__ == "__main__":
16 main()
17
匹配分组
示例:
search
需求:匹配出文章阅读的次数
import re
ret = re.search(r"\d+", "阅读的次数为 9999")
print(ret.group())
运行结果:
“9999”
findall
需求:统计出python、c、c++相应文章阅读的次数
import re
ret = re.findall(r"\d+", "python = 9999, c = 7890 , c++ = 12345")
print(ret)
运行结果
['9999','7890','12345']
sub将匹配到的数据进行替换
需求:将匹配到的阅读次数加1
方法1:
import re
ret = re.sub(r"\d+", '998', "python = 997")
print(ret)
运行结果:
python = 998
方法2:
import re
def add(temp):
strNum = temp,group()
num = int(strNum) + 1
return str(num)
ret = re.sub(r"\d+", add , "python = 997")
print (ret)
ret = re.sub(r"\d+", add , "python = 99")
print(ret)
运行结果:
python = 998
python = 100