Python正则表达式 !五分钟带你完全掌握!

正则表达式又称为规则表达式,是对字符串操作的一种逻辑公式。通过正则表达式,从字符串中可以获取我们想要获取的特定部分。在正则表达式中需要导入re模块。对正则表达式的理解,可以从search和match来入手。

匹配规则如下:

  •  
r"r[A-Z]n"r"r[a-z]n"r"r[0-9]n"r"r[0-9a-z]n"

除了自己定义规则, 还有很多匹配的规则时提前就给你定义好了的. 下面有一些特殊的匹配类型给大家先总结一下。

类型匹配

  •  
\d : 任何数字\D : 不是数字\s : 任何 white space, 如 [\t\n\r\f\v]\S : 不是 white space\w : 任何大小写字母, 数字和 “” [a-zA-Z0-9]\W : 不是 \w\b : 空白字符 (只在某个字的开头或结尾)\B : 空白字符 (不在某个字的开头或结尾)\\ : 匹配 \. : 匹配任何字符 (除了 \n)^ : 匹配开头$ : 匹配结尾? : 前面的字符可有可无

重复匹配

  •  
* : 重复零次或多次+ : 重复一次或多次{n, m} : 重复 n 至 m 次{n} : 重复 n 次

例子:

  •  
print(re.search(r"ab*", "a"))             # <_sre.SRE_Match object; span=(0, 1), match='a'>print(re.search(r"ab*", "abbbbb"))        # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'>  Python学习交流群:1004391443
# + : occur 1 or more timesprint(re.search(r"ab+", "a"))             # Noneprint(re.search(r"ab+", "abbbbb"))        # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'>
# {n, m} : occur n to m timesprint(re.search(r"ab{2,10}", "a"))        # Noneprint(re.search(r"ab{2,10}", "abbbbb"))   # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'>

 

  •  
import repattern1="cat"pattern2="brid"string="dog runs to cat"print(re.search(pattern1,string))print(re.search(pattern2,string))ptn=r"r[au]n"print(re.search(ptn,"dog runs to cat"))
#<_sre.SRE_Match object; span=(12, 15), match='cat'>#None#<_sre.SRE_Match object; span=(4, 7), match='run'>

一般搜索从行开头开始,但我们想从其他的每一行进行,加上flags=re.M参数,对每一行进行处理。

  •  
string="""dog runs to catI run to dog."""print(re.search(r"^I",string))print(re.search(r"^I",string,flags=re.M))  #re.M是re.MULTILINE 这个参数可以对每一行进行处理#None#<_sre.SRE_Match object; span=(17, 18), match='I'>

分组

  •  
match=re.search(r"(\d+),Date:(.+)","stu:4322321,Date:Jun/22/2019")print(match.group()) print(match.group(1))  print(match.group(2))    #4322321,Date:Jun/22/2019#4322321#Jun/22/2019

有时候组会很多,可以在括号开头写上 ?P<名字> 这样的形式给组定义个名字

  •  
match=re.search(r"(?P<stu>\d+),Date:(?P<date>.+)","stu:4322321,Date:Jun/22/2019")print(match.group("stu"))print(match.group("date"))
#4322321#Jun/22/2019

findall

findall查找全部列表

  •  
print(re.findall(r"c[ua]n","cun can catch"))#这里的|是or的意思print(re.findall(r"cun|can","cun can catch"))#['cun', 'can']#['cun', 'can']

replace

匹配掉一些字符串

  •  
print(re.sub(r"r[au]ns","catches","dog runs to cat")) #dog catches to cat

split

分割功能,生成一个列表保存所有单词

  •  
print(re.split(r"[,;\.]","a;b,c.d;e")) #['a', 'b', 'c', 'd', 'e']

下图列出了Python支持的正则表达式元字符和语法:  

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值