python re模块

# re模块  findall(模式,字符串,flags= 0(默认0)
#    返回字符串中所有不重叠匹配的列表,返回所有匹配的内容
#    如果模式中存在一个或多个捕获组,则返回
# 组的列表;如果是模式,这将是一个元组列表
# 有多个组
#  注意 :  findall的分组用法

# findall(pattern, string, flags=0):
#返回字符串中所有不重叠匹配的列表
# import re
# ret = re.findall("\d","12333dddkjkkkk122")   #   模式  字符串
#
# print(ret)   #   ['1', '2', '3', '3', '3', '1', '2', '2']   返回所有匹配上内容是一个列表
#
# ret1 = re.findall("\w","weeii2222")
#
# print(ret1)    #   ['w', 'e', 'e', 'i', 'i', '2', '2', '2', '2']

#  search (模式,字符串  ,默认0)
#def search(pattern, string, flags=0):
#  扫描字符串寻找匹配的模式,返回
#  匹配对象,如果没有找到匹配,则为None。

# import re
# ret = re.search("\d","ww222sssd")
# print(ret)   #  匹配的返回内容     <re.Match object; span=(0, 1), match='2'>    #  返回匹配对象
# print(ret.group())    #  返回  2   # 返回的对象通过group来获取匹配到的第一个结果

#
#  match(pattern, string, flags=0):  #  跟search的区别是只匹配开头第一个符合的字符,否者返回None
# 尝试在字符串开头应用模式,返回
# 匹配对象,如果没有找到匹配,则为None
# import re
# ret = re.match("\d","233dddfffff44")
# print(ret)   # <re.Match object; span=(0, 1), match='2'>  返回一个匹配对象
# print(ret.group())   #  2
# ret1 = re.match("\d","a^222")
# print(ret1)

# 替换sub (pattern, repl, string, count=0, flags=0)
    #sub(  模式,    替换,  字符串, 替换次数, 默认0)
#返回替换最左边所获得的字符串
# 不重叠的模式在字符串中的出现
# 替换repl。repl可以是字符串,也可以是可调用的;
# 如果一个字符串,反斜杠转义将被处理。如果它是
# 一个可调用的,它传递了Match对象并且必须返回
# 要使用的替换字符串
# import re
# ret = re.sub("\d","H","weee33")    #  默认全部替换
# print(ret)  #  weeeHH  返回内容

#  subn(pattern, repl, string, count=0, flags=0):
# 返回一个包含两个元组(new_string, number)。
# new_string是替换最左边的字符串
# 源中模式的不重叠出现
# 字符串由替换repl。数字是
# 替换。repl可以是字符串或a
# 可调用的;如果处理一个字符串,反斜杠转义。
# 如果它是可调用的,它将传递Match对象并必须
# 返回要使用的替换字符串。

# ret1 = re.subn("\d","H","1dfff333")
# print(ret1)     #  返回替换内容和次数,也可以设置替换次数

# ret2 = re.subn("\d","H","123ddgf33",1)   #  设置替换一次
# print(ret2)    #  返回替换内容和次数

# split(pattern, string, maxsplit=0, flags=0)  切割
#通过模式的出现来分割源字符串,
# 返回包含结果子字符串的列表。如果
# 捕获括号在模式中使用,然后是所有文本
# 模式中的组也作为结果的一部分返回
# 列表。如果maxsplit不为零,那么在大多数情况下,
# 字符串的其余部分作为最终元素返回
# 的列表。

# import re
# ret = re.split("\d","12ssdd45fff")
# print(ret)    #  ['', '', 'ssdd', '', 'fff']  #  切割内容是列表,空白字符
#
# ret = re.split("(\d)","12ssdd45fff")    #  如果切割用括号,泽返回切割的内容
# print(ret)   #  ['', '1', '', '2', 'ssdd', '4', '', '5', 'fff']  返回了切割的类容
#

# 进阶方法 - 爬虫\自动化开发
# complit(pattern, flags=0)
# 编译正则表达式模式,返回模式对象
# (预编译)节约时间 只有多次使用某一个相同的正则表达式的时候,这个complit才会帮助提高效率
# import re
# ret = re.compile("\d")
# ret1 = ret.search("22rffff")
# print(ret1)
# ret2 = ret.findall("22wwww")
# print(ret2)

#finditer(pattern, string, flags=0)   空间效率
#字符串。对于每个匹配,迭代器返回一个匹配对象
#结果中包含空匹配项
import re
ret = re.finditer("\d","23dddd33")
print(ret)  #  <callable_iterator object at 0x00000000006D1BE0>  迭代器
for r in ret:
    #print(r)
    print(r.group())

  

posted @ 2018-08-07 21:19  Hear7  阅读(143)  评论(0编辑  收藏  举报