Python使用正则的一些小总结

正则模块

# 正则模块re
import re
# re.match(r"正则表达式",要匹配的数据)
# r  原生的  防止转义
# 获取匹配值的语法格式:ret.group()  报错说明没有匹配成功的数据

元字符

# . (点):匹配出\n以外的所有字符
# \d:匹配数字0-9之间的任意一个
# \D: 匹配除数字以外的任意一个字符  中文  字母  特殊符号
# \w: 匹配 数字 字母 下划线   (中文也可以)
# \W: 匹配除 数字 字母 下划线 中文  以外的其余字符
# \s: 匹配空白符   \n  空格
# \S: 匹配非空白符
# []:字符集
# [1-47-9]:匹配不连续的数字  1-47-9   1 2 3 4 7 8 9
# [a-d]:匹配小写字母a-d   a b c d
# [a-dg-k]:匹配不连续小写字母a-dg-h  a b c d g h i j k
# [0-9a-zA-Z_]:匹配数字字母下划线
# ^: 匹配到字符串开头   
# $: 匹配到字符串结尾  整个字符串都满足条件才可以   

量词

 +:匹配+号前字符   1次或无数次  至少一次
 *:匹配*号前字符   0次或无数次  可有可无
 ?:匹配?号前字符  0次或1次
 {m,n}:匹配m次到n次
 {m}:匹配m次
 {m,}:匹配最少m次
 {,n}:匹配最多n次

分组与或

# |:或者
# ():分组,将()里的字符组成一个分组

例:用正则匹配邮箱 6-20 @qq.com @163.com @sina.com

re.match(r"^[a-zA-Z0-9_]{6,20}@(qq|163|sina)\.(com|cn)$", Email)

这里   (qq|163|sina)  是一个分组    代表可以匹配 该分组中 其中一个即可       

 re接口模块

        match方法

re.match()

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

语法:re.match(pattern, string, flags=0)

pattern:匹配的正则表达式

string:要匹配的字符串

flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

        search方法

re.search() 扫描整个字符串并返回第一个成功的匹配。匹配成功re.search方法返回一个匹配的对象,否则返回None。

函数语法: re.search(pattern, string, flags=0)

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

匹配对象方法描述
group(num=0)匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()

返回一个包含所有小组字符串的元组,从 1 到 所含的小组号

例:  

# 导包
import re
# 使用re模块中的match(正则表达式,要匹配的字符串对象)方法进行匹配
ret = re.match("abc","abcdef")
if ret:  # 判断匹配结果是否存在
    print(ret.group())
else:
    print("匹配失败")

同样  re.search()也可以使用

注意: match 和 search 是匹配一次 findall 匹配所有。 

        findall方法

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

1.pattern.findall(string,pos,endpos)

  • string : 待匹配的字符串。

  • pos : 可选参数,指定字符串的起始位置,默认为 0。

  • endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。

语法示例:

import re

pattern = re.compile(r'\d+')  # 查找数字

result2 = pattern.findall('run88oob123google456', 0, 10)

可以指定查找范围

2,re.findall()

语法:re.finadll(pattern,string,flags=0)

使用该方法则无法  指定匹配的区间了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onlooker10086

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值