一、正则基础
1、为什么使用正则
- 需求
判断一个字符串是否是手机号 - 解决
编写一个函数,给函数一个字符串,如果是手机号则返回True,否则返回False
代码
def isPhone(phone):
# 长度为11
# 全部都是数字字符
# 以1开头
pass
if isPhone("13812345678"):
print("是手机号")
else:
print("不是手机号")
注意
如果使用正则会让这个问题变得简单
2、正则与re模块简介
概述: 正则表达式,又称规则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern)
正则匹配是一个 模糊的匹配(不是精确匹配)
re:python自1.5版本开始增加了re模块,该模块提供了perl风格的正则表达式模式,re模块是python语言拥有了所有正则表达式的功能
如下四个方法经常使用
- match()
- search()
- findall()
- finditer()
二、正则表达式
1、匹配单个字符与数字
2、匹配锚字符
锚字符:用来判定是否按照规定开始或者结尾
3、限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。
三、re模块中常用函数
- 通用flags(修正符)
通用函数
获取匹配结果
- 使用group()方法 获取到匹配的值
groups() 返回一个包含所有小组字符串的元组(也就是自存储的值),从 1 到 所含的小组号。
1、match()函数
- 原型
def match(pattern, string, flags=0)
- 功能
匹配成功返回 匹配的对象
匹配失败 返回 None
- 获取匹配结果
使用group()方法 获取到匹配的值
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
注意:从第一位开始匹配 只匹配一次
参数
代码
import re
res = re.match('\d{2}','123')
print(res.group())
#给当前匹配到的结果起别名
s = '3G4HFD567'
re.match("(?P<value>\d+)",s)
print(x.group(0))
print(x.group('value'))
2、searce()函数
原型
def search(pattern, string, flags=0)
- 功能
扫描整个字符串string,并返回第一个pattern模式成功的匹配
匹配失败 返回 None
- 参数
- 注意:
只要字符串包含就可以
只匹配一次
- 示例
import re
res = re.search('[a-z]', '131A3ab889s')
print(res)
print(res.group()
- 注意
与search的区别
- 相同点:
都只匹配一次
- 不同点:
- search是在要匹配的字符串中 包含正则表达式的内容就可以
- match 必须第一位就开始匹配 否则匹配失败
接下文 Python编程--正则基础(二)https://developer.aliyun.com/article/1618835