正则表达式二 :re.findall()和元字符

>>> import re
>>> re.search('nibi','wo niubi')
>>> re.search('niubi','wo niubi')
<_sre.SRE_Match object; span=(3, 8), match='niubi'>
>>> 
>>> #用或语句
>>> re.search(r"fish(c|d)","fishcddd")
<_sre.SRE_Match object; span=(0, 5), match='fishc'>
>>> 
>>> #用脱字符^来确认是否在字符串的开始位置
>>> re.rearch(r"^fish","wowo fish")
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    re.rearch(r"^fish","wowo fish")
AttributeError: module 're' has no attribute 'rearch'
>>> re.search(r"^fish","wowo fish")
>>> re.search(r"^fish","fish wowoowowo")
<_sre.SRE_Match object; span=(0, 4), match='fish'>
>>> 
>>> # $匹配字符串的结束位置
>>> re.search(r"^$fish","wowo fish")
>>> re.search(r"$fish","wowo fish")
>>> re.search(r"fish$","wowo fish")
<_sre.SRE_Match object; span=(5, 9), match='fish'>
>>> #$符号放在末尾
>>> 
>>> 
>>> # ()组的使用
>>> re.search(r"(fish)\1","wowo fish")
>>> (fish)\1==fishfish
SyntaxError: unexpected character after line continuation character
>>> #(fish)\1==fishfish
>>> re.search(r"(fish)\1","wowo fishfish")
<_sre.SRE_Match object; span=(5, 13), match='fishfish'>
>>> 
>>> # []字符类的使用
>>> re.search(r"[.]","fish.com")
<_sre.SRE_Match object; span=(4, 5), match='.'>
>>> #字符类中所以符号均当成普通字符,除了"-"
>>> re.findall(r"[a-z]","fish.com")
['f', 'i', 's', 'h', 'c', 'o', 'm']
>>> #findall 是找到所有符合的字符,最后打包成列表返回。
>>> 
>>> #第二个是\,在[]也特殊
>>> re.findall(r"[\n]","dndfsdf \n")
['\n']
>>> 
>>> # ^脱字符的使用,除了其后内容其他均匹配
>>> re.findall(r"[a-z]","find oooo 222, \n")
['f', 'i', 'n', 'd', 'o', 'o', 'o', 'o']
>>> re.findall(r"^[a-z]","find oooo 222, \n")
['f']
>>> re.findall(r"[^a-z]","find oooo 222, \n")
[' ', ' ', '2', '2', '2', ',', ' ', '\n']
>>> #注意脱字符的位置
>>> 
>>> #{}匹配次数
>>> re.search(r"fis{3}h"{3},"fisssh")\
				   
SyntaxError: invalid syntax
>>> re.search(r"fis{3}h","fisssh")
<_sre.SRE_Match object; span=(0, 6), match='fisssh'>
>>> re.search(r"(fish{3})","fishfishfish iiiiii")
>>> re.search(r"(fish){3}","fishfishfish iiiiii")
<_sre.SRE_Match object; span=(0, 12), match='fishfishfish'>
>>> 
>>> re.search(r"(fish){3,66}","fishfishfish iiiiii")
<_sre.SRE_Match object; span=(0, 12), match='fishfishfish'>
>>> 
>>> 
>>> # *=={0,} ,+=={1,} , ?=={0,1}
>>> #问号用来写ip地址就是天作之和
>>> 
>>> 
>>> #正则表达式默认选用贪婪模式
>>> s=r"<html><title>i love you</title></html>"
>>> re.search(r"<.+>",s)
<_sre.SRE_Match object; span=(0, 38), match='<html><title>i love you</title></html>'>
>>> #加号+表示重复前面任何内容,遇到>停下来
>>> 
>>> #启用非贪婪模式
>>> re.search(r"<.+>?",s)
<_sre.SRE_Match object; span=(0, 38), match='<html><title>i love you</title></html>'>
>>> re.search(r"<.+?>",s)
<_sre.SRE_Match object; span=(0, 6), match='<html>'>
>>> #上面的?是取消贪婪模式
>>> >>> re.findall(r"\bfishc\b","fish.com!fishc.com!(fishc)")
['fishc', 'fishc']
>>> #匹配单词边界\b
>>> 
>>> #非常重要的是把元字符表给搞下来经常看看
>>> 
>>> re.findall(r"\w","我爱你 love_you")
['我', '爱', '你', 'l', 'o', 'v', 'e', '_', 'y', 'o', 'u']
>>> #\w是Unicode字符
>>> 
>>> #编译正则表达式
>>> 
>>> p=re.compile(r"[A-Z]")
>>> type(p)
<class '_sre.SRE_Pattern'>
>>> p.search("I LOVE you")
<_sre.SRE_Match object; span=(0, 1), match='I'>
>>> p.findall("I LOVE you")
['I', 'L', 'O', 'V', 'E']
>>> #这样利于方便
>>> 
>>> >>> re.search(r"(\w+)(\w+)","I love you")
<_sre.SRE_Match object; span=(2, 6), match='love'>
>>> result=re.search(r"(\w+)(\w+)","I love you")
>>> result.group()
'love'
>>> result.group(1)
'lov'
>>> result.group(2)
'e'
>>> result.start()
2
>>> result.end()
6
>>> result.span()
(2, 6)
>>> 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值