正则
1、 匹配所有的数字[0-9]
匹配所有的字母[a-z]
匹配所有的大写字母 [A-Z]
匹配所有数字字母 [0-9a-zA-Z]
2、元字符
\d 是匹配所有数字
\w 是配置所有的数字字母下划线还有中文
\s 是匹配所有的空白符 制表符 换行符
\n 匹配回车
\t 匹配tab
\D 匹配所有非数字
\W 匹配 所有非数字字母 下划线
\S 匹配所有非空白
. 匹配处了换行符之外的人任意一个字符
^ 匹配一个字符串的开始
$ 匹配一个字符串的结束
[abc123] 匹配abc123 这几个字符
[^abc123] 匹配除了abc123 的所有字符
[^ ] 匹配非空字符
| 或得关系 例如:alex|wusi
() 用来规范字符的范围
注释 :^alex|alexerer$ 这样写的话 alex1223445 也会匹配
^(alex|alexer)$ 这样写的话 alex122344 就不会在匹配了 只匹配alex
3、 量词
{n} 匹配n 次
{n,} 匹配至少n次
{n,m} 匹配n-m 次
? 0 或者1次
+ 1-无穷大
* 0-无穷大
4、 匹配手机号 1[2-9]\d{9}
匹配任意正整数 [1-9]\d*\
匹配任意的小数 \d+\.\d+
匹配整数或者小数 \d+(\.\d+)?
5 、 re 正则
import re
ret= re.findall('\d','hello1234556') ######前面是规则后面是要匹配的字符串
print(ret) ###返回结果['123456', '12334']
ret1 = re.search('\d','hello123,word456') ###### 只匹配从左到右第一个 匹配项
print(ret1) #### 返回结果是 <re.Match object; span=(4, 5), match='1'> 为一个变量 需要用group获取值
print(ret1.group()) #####返回结果是1
上述两个的区别就是:
import re
phone_num = input("请输入手机号:")
regex = r'^1[2-9]\d{9}$'
ret = re.search(regex,phone_num)
ret1 = re.findall(regex,phone_num)
if ret :
print("合法手机号")
else:
print("不是合法的手机号")
#如果input 输入的是 1372345345678 使用find_all 就会显示[] 空列表
#如果上述方式 使用的是search 就会返回None
re.match(r‘\d+’,r'84alex') #用match 的话 默认自带^默认就是匹配以数字给开头的,如果 匹配‘alex84’ 还匹配不到
find_all(正则表达式,带匹配的字符串 )
功能是:取所有
返回值:列表 所有匹配到的项都会返回到列表中
import re
phone_num = input("请输入手机号:")
regex = r'^1[2-9]\d{9}$'
ret1 = re.findall(regex,phone_num)
print(ret1)
search( 正则表达式,带匹配的字符串 )
功能是: 从头开始往后找任何地方有符合条件的都返回一个
返回值:re 自定义类型
import re
phone_num = input("请输入手机号:")
regex = r'^1[2-9]\d{9}$'
ret = re.search(regex,phone_num)
print(ret)
match(正则 表达式,带匹配的字符串) #####匹配用户输入的时候,都用是match
功能是: 从从头开始匹配,如果开始 匹配到了 就是匹配成功了,如果开始部门没有 匹配到,就 匹配失败
返回值:re自定义类型
re.split(“正则”,带匹配的字串)
ret = re.split(r'\d+',r'alexx875wusi')
print(ret)
返回为:['alexx', 'wusi'] 把数字给切出去了
替换方法:
re.sub( 正则 替换的后的字符串,替换前的字符串)
ret = re.sub(r'\d+','H',r'alex345wusi23')
print(ret)
返回结果为:alexHwusiH
re.sub( 正则 替换的字符串,替换前的字符串)
ret = re.sub(r'\d+','H',r'alex345wusi23')
print(ret)
返回结果为:('alexHwusiH', 2) ####替换后的结果和替换的次数
正则表达式分组命名(?P<组名>正则表达式) 给这个分组内的正则表达式起一个名字
等后面匹配出完整结果之后通过.group('组名') 就可以获得这个分组中匹配的内容
例如:
import re
ret = re.search('\d\d','alex3714')
print(ret.group())
输出37
import re
ret = re.search('\d(?P<sedn>\d)','alex3714')
print(ret.group('sedn'))
这样相当于给7一个sedn分组,这样输出就是7