Day14:正则表达式与re模块

正则表达式

  - 是一种匹配字符串内容的规则

    - 元字符 \d \w \s \n \t ^ $

    - 量词 * + ? {}

    - 默认贪婪匹配原则

    - 字符集量词贪婪匹配的标识符 :?

    - ? 在正则中的应用:量词,非贪婪标志 findall取消分组优先,分组命名

re模块

  - re模块和正则表达式的关系类似于time模块和时间,是一种利用模块里面的功能使用

   正则表达式的规则

  - findall 返回所有满足匹配条件的结果,放在列表里

  - search 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以

    通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。  

  - match 在字符串开始处开始匹配,如果第一个匹配不到,就返回None,其它同search

  - split

ret = re.split('[ab]', 'dsaerbcd')  # 先按'a'分割得到'ds'和'erbcd',在对'ds'和'erbcd'分别按'b'分割
print(ret)  # ['ds', 'er', 'cd']

  - sub

ret = re.sub('\d', 'H', 'eva3egon4yuan4', 1)#将数字替换成'H',参数1表示只替换1个
print(ret) #evaHegon4yuan4

  - subn

ret = re.subn('\d', 'H', 'eva3egon4yuan4')#将数字替换成'H',返回元组,显示替换的次数
print(ret)  #('evaHegonHyuanH', 3)

  - compile

obj = re.compile('\d{3}')  #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())  #结果 : 123

  - finditer

import re
ret = re.finditer('\d', 'ds3sy4784a')   #finditer返回一个存放匹配结果的迭代器
print(ret)  # <callable_iterator object at 0x10195f940>
print(next(ret).group())  #查看第一个结果
print(next(ret).group())  #查看第二个结果
print([i.group() for i in ret])  #查看剩余的左右结果

 

  

posted @ 2017-09-15 14:42  世界辣么大  阅读(49)  评论(0)    收藏  举报