一、正则表达式概述
(一)概述:
正则表达式,regular expression 简称:Regex,是一种用于匹配和处理文本的强大工具。它由一系列特定的符号和规则组成,可以用来搜索、替换、拆分等操作。正则表达式可用于各种编程语言和文本编辑器中,具有广泛的应用场景。
(二)目的:
用于校验, 匹配数据的, 判断数据是否符合 我们指定的 规则。
(三)用法:
1. 导包. import re
2. 正则匹配.
result = re.match(正则表达式, 要校验的字符串, 额外功能:例如忽略大小写 多行模式等)
匹配的意思, 从左往右依次逐个匹配。
result = re.search(正则表达式, 要校验的字符串, 额外功能:例如忽略大小写 多行模式等)
查找的意思, 任意的一段能匹配上即可。
result = re.compile(pattern=正则表达式).sub('用来替换的内容', '要被替换的字符串')
3. 获取匹配结果. result.group() 获取匹配结果, 分组编号不写, 默认是: 0
(四)正则表达式常用元字符
1、. :匹配任意字符(除换行(\n)符外)。
2、? :匹配前一个字符的0个或1个实例。
3、+ :匹配前一个字符的1个或多个实例。
4、* :匹配前一个字符的0个或多个实例。
5、{n} :匹配前一个字符的n个实例。
6、{n,} :匹配前一个字符的至少n个实例。
7、{n,m} :匹配前一个字符的至少n个但不超过m个实例。
8、\d :匹配任意一个数字字符,等价于[0-9]。
9、\D :匹配任意非数字字符,等价于[^0-9]。
10、\s :匹配任意空白字符(包括空格、制表符、换页符等)。
11、\S :匹配任意非空白字符。
12、^ :匹配行的开头。
13、| :代表:或者的意思
14、$ :匹配行的结尾。
15、 (?P<name>) :起名字的, 给分组起名字.
(?P=name) :根据名字, 引用分组
(五)案例展示
# 需求: 匹配出 163, 126, qq等这些邮箱.
# 邮箱规则: 4-13位数字字母_ @ 163或者126或者qq .com
代码如下:
# 1. 导包.
import re
# 2. 校验邮箱
# 细节: \. 表示取消.的特殊含义, 使其成为1个普通的.
result = re.match('[a-zA-Z0-9_]{4,20}@(163|126|qq)\.(com|cn)', '3673123321@qq.com')
# 3. 判断, 并打印.
if result:
info = result.group()
print(f'匹配到: {info}')
# 扩展: 打印下不同分组的内容.
print(f"组0: {result.group(0)}") # hello123321@qq.com
print(f"组1: {result.group(1)}") # qq
print(f"组2: {result.group(2)}") # com
else:
print('未匹配!')