Python正则练习

__author__ = '***'

import re
print(re.match('www','www.runoob.com'))
print(re.match('www','www.runoob.com').span())
print(re.match('com','www.runoob.com'))
line="Cats are smarter than dogs"
# #.* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符
matchObj=re.match(r'(.*)are (.*?).*',line,re.M|re.I)
if matchObj:
    print("matchObj.group():",matchObj.group())
    print("matchObj.group(1):",matchObj.group(1))
    print("matchObj.group(2):",matchObj.group(2))
else:
    print("No match!!")

print(re.search('www','www.runoob.com').span())
print(re.search('com','www.runoob.com').span())  #span()从0开始
# print(re.search('www','www.runoob.com').groups())
print(re.search('com','www.runoob.com').group(0))

line="Cats are smarter than dogs"
searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)
if searchObj:
    print("searchObj.group():",searchObj.group())
    print("searchObj.group(1):",searchObj.group(1))
    print("searchObj.group(2):",searchObj.group(2))
else:
    print("Nothing found!!")

line="Cats are smarter than dogs"
matchObj=re.match(r'dogs',line,re.M|re.I)
if matchObj:
    print("match-->matchObj.group():",matchObj.group())
else:
    print("No match!!")
matchObj=re.search(r'dogs',line,re.M|re.I)
if matchObj:
    print("search-->matchObj.group():",matchObj.group())
else:
    print("No match!!")
phone="2004-959-559 # 这是一个电话号码"
#删除注释
num=re.sub(r'#.*$',"",phone)#以#号开头任意字符
print("电话号码:",num)
# #移除非数字的内容
num=re.sub(r'\D',"",phone)
print("电话号码:",num)
#将匹配的数字乘以2
def double(matched):
    value=int(matched.group('value'))
    return str(value*2)
s='A23G4HFD567'
print(re.sub('(?P<value>\d+)',double,s))
#这两个是一样的这就是(?P<value>)的起别名
def double(matched):
    value=int(matched.group(1))
    return str(value*2)
s='A23G4HFD567'
print(re.sub('(\d+)',double,s))
#compile函数
pattern=re.compile(r'\d+')#用于匹配至少一个数字
m=pattern.match('one12twothree34four')#查找头部,没有匹配
print(m)
m=pattern.match('one12twothree34four',2,10)#从'e'的位置开始匹配,没有匹配,下标0开始
print(m)
m=pattern.match('one12twothree34four',3,10)#从'1'的位置开始匹配,正好匹配
print(m)
print(m.group(0))
print(m.start(0))
print(m.end(0))
print(m.span(0))#span就是位置,匹配的位置头和尾的下标,但是总感觉尾部的下标多一位

#实例
pattern=re.compile(r'([a-z]+) ([a-z]+)',re.I)#中间的空格很重要
m=pattern.match('Hello World Wide Web')
print(m)  #匹配成功,返回一个Match对象
print(m.group(0))#返回匹配成功的整个子串
print(m.span(0))#返回匹配成功的整个子串的索引
print(m.group(1))#返回第一个分组匹配成功的子串
print(m.span(1))#返回第一个分组匹配成功的子串的索引
print(m.group(2))#返回第二个分组匹配成功的子串
print(m.span(2))#返回第二个分组匹配成功的子串索引
print(m.groups())#等价于(m。group(1),m.group(2),...)
print(m.group(3))#不存在第三个分组
#findall 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的则返回空列表
#注意:match和search是匹配一次findall匹配所有
# 实例:
pattern=re.compile(r'\d+')#查找数字
result1=pattern.findall('runoob 123 google 456')
result2=pattern.findall('run88oob123google456',0,10)
print(result1)
print(result2)

# re.finditer  和findall一样,但是返回的是个迭代器
it=re.finditer(r"\d+","12a32bc43jf3")
for match in it:
    print(match.group())
# re.split split方法按照能够匹配的子串将字符串分割后返回列表,
# 实例
print(re.split('\W+','runoob, runoob ,runoob.'))
print(re.split('(\W+)',' runoob, runoob, runoob.'))

print(re.split('\W+',' runoob, runoob ,runoob.',1))
print(re.split('a*','hello world'))

test='<div class="info-middle" style="background-color: rgb(255, 248, 234);">Huan An Xi Lu 277 Hao </div>'
pattern=re.compile('<div class="info-middle"[\w\W]*?;">(.*?) </div>',re.S)

map_address=re.findall(pattern,test)
print(map_address)

test1='content: createInfoWindow('', "4/F, 147K Argyle Street, Kowloon, Hong Kong"),'
pattern=re.compile('content: createInfoWindow.*?,(.*?)\)',re.S)#括号前加转义符号

map_address=re.findall(pattern,test1)
print(map_address)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值