代码改变世界

2018.3.16学习笔记(正则表达式)(作业没做)

2018-03-16 23:21  冒牌权限  阅读(72)  评论(0)    收藏  举报
#/usr/bin/env python
# -*- coding:utf-8 -*-

import re
#findall()匹配相应内容,把内容放进一个列表里面
#search()匹配第一个内容,得到一个方法对象,有自己的方法,例如re.search().group()
    # group()返回被re匹配的字符串,默认有参数0,可以输入多个组号对应不同的组
    # start()返回匹配开始的位置
    # end()返回匹配结束的位置
    # span()返回一个元组包含匹配(开始,结束)的位置
#match()匹配最开始内容,得到一个方法对象,有自己的方法,同search()
# re.match(pattern,string,flags = 0)
# 默认flags = 0
# re.match(pattern,string,re.I)
# re.I 对大小写不敏感
# re.L 做本地化识别
# re.M 多行匹配,影响^和$
# re.S 使.匹配所有字符,包括换行符

#sub()替换
print(re.sub('g.t','have','i get a , i got b ,i gut c',2))
#compile()把匹配规则先编译成对象,方便以后多次调用
txt = ' woo heho ola jdao assd aook book hfowjhe holhaf joj jooa'
regex = re.compile(r'\w*oo\w*')
print(regex.findall(txt))#匹配所有含oo的单词
#split()按匹配规则分割
regex = re.compile(' ')
print(regex.split(txt))#发现前面有个空字符,因为woo前面有个空格,分割是分割成两边

原生字符串:因为正则本身是一种语言,python也是一种语言,所以要将python的字符串传给正则的时候难免要将一些特殊的字符传过去,最典型的就是‘\’,为避免出现比较坑爹的情况,就使用原生字符串,即规则前面加个r

  例子:re.search(r'\\'.'abc\def')

  如果不使用原生字符串,上面的例子得写成re.search('\\\\'.'abc.def')

练习:写一个计算器