13 正则表达式
正则表达式,又称规则表达式,是使用单个字符串来描述、匹配某个语法规则的字符串,常被用来检索、替换那些符合某个模式(规则)的文本
简单来说,正则表达式就是使用:字符串定义规则,并通过规则验证字符串是否匹配
只要配置好正则规则,即可匹配到自己想要的数据
正则表达式的优势
# # if判断手机号
# number = input('请输入你需要识别的内容:')
# if number[0:2] == '13':
# print('这是一个手机号')
# else:
# print('不是一个手机号')
# 正则匹配手机号
import re
number = input('请输入需要识别的内容;')
# 匹配1开头
r1 = re.findall('^1\d{10}$', number)
print(r1)
# 匹配13开头
r2 = re.findall('^13\d{9}$', number)
print(r2)
re模块的三种使用方法(基础字符串匹配)
python正则表达式,使用re模块,并基于re模块中三个基础方法来做正则匹配
分别是:match、search、findall三个基础方法
re.match(匹配规则,被匹配字符串)
从被匹配的而字符串开头进行匹配,匹配成功返回匹配对象(包含匹配的信息),匹配不成功返回None
re.search
搜索整个字符串,找出匹配的。从前向后,找到第一个后,就停止,不会继续向后(搜索不到返回None)
re.findall
匹配字符串,找出全部匹配项(搜索不到返回空列表list:[])
"""
正则表达式
re模块的3个基础匹配方法
match()
search()
findall()
"""
import re
s = 'python hello hello python hello python hello python'
# match 从头匹配:从被匹配字符串开头进行匹配,匹配成功返回匹配对象(包含匹配的信息),匹配不成功返回空(搜索不到返回None)
result = re.match('python', s) # (匹配规则,被匹配的数据)
print(result)
# print(result.span()) # (0,6)
# print(result.group()) # python
# search 搜索匹配:搜索整个字符串,找出匹配的。从前向后,找到第一个后,就停止,不会继续向后(搜索不到返回None)
result = re.search('python', s)
print(result)
# findall 搜索全部匹配:匹配字符串,找出全部匹配项(搜索不到返回空列表list:[])
result = re.findall('python', s)
print(result)
元字符匹配
"""
正则的匹配可以在所有编程语言中使用
python正则表达式使用元字符进行匹配
正则匹配的规则不能出现额外的空格
"""
import re
s = 'python2 3@!#% !! 666 #7# *71*5* 吃饭'
# 找出数字 \d
result1 = re.findall(r'\d', s) # 匹配规则前带上r的标记,表示字符串中转义字符无效,就是普通字符的意思
print(result1)
# 找出特殊字符 \W
result2 = re.findall(r'\W', s)
print(result2)
# 找出全部英文字母
result3 = re.findall(r'[a-zA-Z]', s)
print(result3)
# 匹配中文字符
result4 = re.findall(r'\u4e00-\u9fa5', s) # 使用unicode编码范围
print(result4)
"""
简单理解正则符号的用法
"""
# 正则匹配手机号
# import re
# number = input('请输入需要识别的内容:')
# # 匹配1开头
# r1 = re.findall('^1\d{10}$', number)
# print(r1)
# # 匹配13开头
# r2 = re.findall('^13\d{9}$', number)
# print(r2)
正则表达式案例
import re
# 匹配账号,只能由字母和数字组成,长度限制6到10位
r = re.compile(r'^[0-9a-zA-Z]{6,10}$') # 正则中无代码规范,无需使用空格分隔
s = '1234567ab'
print(re.findall(r, s))
# 匹配QQ号,要求纯数字,长度5-11,第一位不为0
r = re.compile(r'^[1-9][0-9]{4,10}$')
s = '12345678'
print(re.findall(r, s))
# 匹配邮箱地址,只允许qq、163、gmail这三种邮箱地址
r = re.compile(r'^(([\w-]+)@(qq|163|gmail)(\.[\w]+))$') # 如果正则表达式内由括号分组,会默认把每个括号的结果使用列表显示出来
s = 'zhangsan123123@163.com'
print(re.findall(r, s))
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自。
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果