Python高阶之正则表达式的用法

"本文详细介绍了Python内置模块re中的split, sub和findall方法,通过实例演示了它们在处理字符串时的用法,包括如何分割、替换和查找符合正则表达式的模式。同时,讲解了元字符的概念,如w, d, s及其反义字符,并展示了各种量词的使用,如*, +, ?, {n}
摘要由CSDN通过智能技术生成

模块:re (系统模块)

方法:

(1)split(pattern,string),使用字符串中与pattern规则匹配的内容进行分隔,返回一个列表

pattern:正则表达

 string: 待处理的字符串

示范代码:

import re
s = "fgh567asd9omn" 
r=re.split('\d+',s) #使用至少1个数字分隔,将字符串转换为列表 ["fgh","asd","mn"J
print(r)

(2)sub(pattern,repl,string),将字符串与pattern规则匹配的内容进行替换(替换成repl),返回一个新字符。

pattern:正则表达式

repl:新内容

string: 待处理的字符串

示范代码:

import re
S='fgh567asd90mn'
r=re.sub('\d','*',s) #将字符串中的数字替换为* 
print(r)

结果如图

(3)findall(pattern, string[,控制字符]),以列表返回字符串中与pattern 规则匹配的内容,如果没有匹配的则返回空列表

pattern: 正则表达式

string: 待处理的字符串

控制字符:

re.S,使元字符。可以匹配包括换行符\n在内的所有字符

re.I,忽略大小写

import re

s ='a\nfga$h56a7asdA90mn '

r = re.findall('a.',s) #找出字符串中a开头,长度为2的子字符串

print(r)

r = re.findall('a.',s,re.S) #找出字符串中a开头,长度为2的子字符串,包括a\n

print(r)

r = re.findall('a.',s,re.S|re.I) #找出字符串中a开头,长度为2的子字符串,不区分大小写

print(r)

结果如图

(4)元字符

1.

\w,匹配一个单词字符(字母,数字,下划线)

\W,匹配一个 非单词字符

import re

s ='a\nfga$h56a7asdA90mn '

r = re.findall('a\w',s,re.s|re.I) #匹配单词字符
print(r)

r = re.findall('a\W',s,re.S|re.I) #匹配非单词字符
print(r)

结果如图

 2.

\d,匹配一个数字字符

\D,匹配一个非数字字符

import re

s ='a\nfga$h56a7asdA90mn '

r = re.findall('a\d\d',s,re.s|re.I) #匹配数字字符
print(r)

r = re.findall('a\D',s,re.S|re.I) #匹配非数字字符
print(r)

结果:

3.

\s,匹配一个空白字符

\S,匹配一个非空白字符

import re

s ='a\nfga$h56a7asdA90mna\tba 123'

r = re.findall('a\s',s,re.s|re.I) #匹配数字字符
print(r)

r = re.findall('a\S',s) #匹配非数字字符
print(r)

结果:

4.

●.,匹配除换行符\n以外的任意一个字符

●^,匹配字符串开头

●$,匹配字符串结尾

import re

s ='a\nfga$h56a7asdA90mna\tba 123'

r = re.findall('^a.',s,re.s|re.I) #匹配以a开头
print(r)

r = re.findall('\d$',s) #匹配以数字结尾
print(r)

●*,匹配前一个字符任意次

ab* -——a、ab、abb、 abbbbb

●+,匹配前一个字符至少1次

ab+ -——ab、abb、 abbbbbb

?,匹配前一个字符0次或者1次

●ab?-——ab、a

●{n},匹配前一个字符n次

ab{3} ——abbb

●{n,},匹配前一一个字符至少n次

ab{3,} —— abbb、abbbb

●{n,m},匹配前一个字符至少n次,最多m次

ab{1,3} ——abbb、abb、ab

●{,m},匹配前一个字符最多m次

●ab{,3} ——abbb、 abb、ab、a 

import re

s='a12a123a4567a9fasd'

r : re.findall('a\d*' ,s)print(r)

r = re.findall( 'a\d+' ,s)print(r)

r = re.findall('a\d?',s)print(r)

r = re. findall('a\d{3}',s)print(r)

r = re.findall('a\d{3,}',s)print(r)

r = re.findall('a\d{2,4}',s)print(r)

r = re.findall('a\d{,4}',s)print(r)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值