python 正则表达式

元字符
代码说明
.匹配除换行符以外的任意字符
\w匹配字符、数字、下划线或汉字
\W匹配除字母、数字、下划线或汉字以外的字符
\s匹配单个的空白符(包括健和换行健)
\S除单个的空白符(包括健和换行健)以外的所有字符
\d匹配数字
\b匹配单词的开始或结束,单词的分解符通常是空格、标点符号或换行
^匹配字符串的开始
$匹配字符串的结束

#### 限定符

限定符说明举例
匹配前面的字符零次或一次colou?r,该表达式可以匹配colour和color
+匹配前面的字符一次或多次go+gle,该表达式可以匹配的范围从gogle到goo…gle
*匹配前面的字符零次或多次go*gle,该表达式可以匹配的范围从ggle到goo…gle
{n}匹配前面的字符n次go{2}gle,该表达式值匹配google
{n,}匹配前面的字符最少n次go{2,}gle,该表达式范围从google到goo…gle
{n,m}匹配前面的字符最少n次,最多m次employe{0,2},该表达式从employ到employee
#18位的身份证号码
(^\d{18}$)|(^\d{17})(\d|X|x)$

匹配自定义字符:[aeiouAEIOU]

匹配汉字:[\u4e00-\u9fa5]

匹配连续多个汉字:[\u4e00-\u9fa5]+

排除符:[^a-zA-Z]

python math() search() findall()方法

**math():**用于在字符串开始处进行匹配

#pattern:表示模式字符串,由要匹配的正则表达式转换而来
#string:表示要匹配的字符串
#flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写等
re.match(pattern,string,[falgs])
import re
pattern=r'mr_\w+'		#模式字符串
string='MR_SHOP mr_shop' 		#要匹配的字符串
math=re.match(pattern,string,re.I)		#匹配字符串,不区分大小写
print("匹配值的起始位置:",math.start())
print("匹配值的结束位置:",math.end())
print("匹配位置的元组:",math.span())
print("要匹配的字符串:",math.string)
print("匹配数据:",math.group())

结果如下

匹配值的起始位置: 0
匹配值的结束位置: 7
匹配位置的元组: (0, 7)
要匹配的字符串: MR_SHOP mr_shop
匹配数据: MR_SHOP

**search():**在整个字符串中搜索第一个匹配的值

re.search(pattern,string,[falgs])
import re
xxx=r'\d{4}'
sss="2222sdfsf1232"
math=re.search(xxx,sss).group()
print(math)

#结果
2222

**findall()😗*在整个字符串中搜索所有符合正则表达式的字符串,并以列表形式返回。

re.search(pattern,string,[falgs])
import re
xxx=r'\d{4}'
sss="2222sdfsf1232"
math=re.findall(xxx,sss)
print(math)

#结果
['2222', '1232']
()分组

在findall()时,优先得到的分组中的结果

  1. 返回字符串中所有非重叠匹配的列表。
  2. 如果模式中存在一个或多个捕获组,则返回一个组列表;如果模式有多个组,这将是一个元组列表。
  3. 结果中包含空匹配项。
import re
xxx=r'[1-9]{1,3}(\.[1-9]{1,3}){3}'   #将(\.[1-9]{1,3})为一组
sss="129.11.2.3 129.33.22.11"
math=re.findall(xxx,sss)
print(math)

#输出
['.3', '.11']
import re
xxx=r'([1-9]{1,3}(\.[1-9]{1,3}){3})'  #将整体为一组
sss="129.11.2.3 129.33.22.11"
math=re.findall(xxx,sss)
print(math)

#输出
[('129.11.2.3', '.3'), ('129.33.22.11', '.11')]
字符串替换
#pattern:表示模式字符串,由要匹配的正则表达式转换而来
#repl:表示要替换的字符串
#string:表示要被查找的原始字符串
#count:可选参数,表示模式匹配后的最大次数,默认值为0,表示替换所有匹配
#flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写等
re.sub(pattern,rel,string,count,flags)
import re
pattern=r'1[34578]\d{9}'
string='中奖号码为:84978981 联系电话为:13611111111'
result=re.sub(pattern,'1××××××××××',string)
print(result)

#结果
中奖号码为:84978981 联系电话为:1××××××××××
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值