python-正则化RE

RE使用大致步骤

1.使用compile将表示正则的字符串编译为一个pattern对象
2.通过pattern对象提供一系列方法对文本进行查找匹配,找到匹配结果,一个Match对象3.
3.最后使用Match对象提供的属性和方法获取信息,根据需要进行操作

Re常用函数

  • group():获得一个或多个分组匹配的字符串,当要获取整个匹配的子串时,直接使用group或者group(0)

  • start:获取分组匹配的子串在整个字符串中的起始位置,参数默认为0

  • end:获取分组匹配的子串在整个字符串的结束位置,默认为0

  • span:返回的结构技术(start(group),end(group))

      	#导入相关包
      	import  re
      	#查找数字
      	#r表示字符串不转义
      	p = re.compile(r'\d+')
      	#在字符串"one12towthree33456four78"中进行查找,按照规划p制定的正则进行查找
      	#返回结果是None表示没有找到,否则会返回match对象
      	#参数3,26表示在字符串中查找范围
      	m = p.match("one12towthree33456four78",3,26)
      	print(m)
      	print(m.start(0))
      	print(m.end(0))
    

#上述代码说明的问题

  • 1.match可以输入参数表示起始范围

  • 2.查找到结果只包含一个,表示第一次进行匹配成功的内容

      	import  re
      	# 1表示忽略大小写
      	p = re.compile(r'([a-z]+) ([a-z]+)',re.1)
      	m = p.match("I am really like mingyue")
      	print(m)
      	print(m.group(0))
      	print(m.start(0))
      	print(m.end(0))
      	print(m.group(1))
      	print(m.start(1))
      	print(m.end(1))
      	print(m.groups())
    

查找

  • search(str, [,pos[,endpos]]):在字符串中查找匹配,pos和endpos表示起始位置

  • findall:查找所有

  • 赴内地特然:查找,返回一个iter结果

      	import  re
      	p = re.compile(r'\d+'
      	m = p.search("one12two34three567four")
      	print(m.group())
      	rst = p.findall("one12two34three567four")
      	print(type(rst))
      	print(rst)
    

sub替换

  • sub(rep1,str[,count])

      	import  re
      	p = re.compile(r'(\w+) (\w+)’)
      	s = "hello 123 liu 456 mingyue, i love you"
      	rst = p.sub(r'hello world',s)
      	print(rst)
    

匹配中文

  • 大部分中文内容表示范围是[u4e00-u9fa5],不包括全角标点

      	import re
      	title = u'世界 你好, hello moto'
      	p = re.compile(ur'[\u4e00-\u9fa5]+')
      	rst = p.findall(title)
      	print(rst)
    

贪婪和非贪婪

  • 贪婪:尽可能多的匹配, (*)表示贪婪匹配
  • 非贪婪:找到符合条件的最小内容即可,(?)表示非贪婪
  • 正则默认使用贪婪匹配
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值