re模块(一)

re模块和compile对象均有的函数


obj = compile(pattern,flags = 0)


功能: 获取正则表达式对象


参数:


    pattern : 一个字符串形式的正则表达式


    flags:  标识位,默认为0,可省略


返回值 : 正则表达式对象


注意:flags 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:


      re.I


          IGNORECASE


          忽略字母大小写


      re.L


          LOCALE


          表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境。


      re.M


          MULTILINE


          多行模式


      re.S


          DOTALL


          即为' . '并且包括换行符在内的任意字符(' . '不包括换行符)


      re.X


          VERBOSE


          为了增加可读性,忽略空格和' # '后面的注释


#!/usr/bin/env python3
# coding =utf-8

'''
正则表达式  re 模块

'''
import re

s = '''hello world
Hello kitty
nihao China
'''
# 一个字符串形式的正则表达式
pattern = '''(?P<dog>hello) #dog 组
\s+ #空字符
(world) #第二组用来匹配world
'''
l = re.findall(pattern, s, re.X | re.I)
# re.I 忽略字母大小写
# re.X  为了增加可读性,忽略空格和' # '后面的注释
print(l)
# [('hello', 'world')]

l = re.findall('.+', s, re.S)
# re.S即为' . '并且包括换行符在内的任意字符
# ' . '不包括换行符
print(l)
# ['hello world\nHello kitty\nnihao China\n']

l = re.findall('^nihao', s)
print(l)
# []

l = re.findall('^nihao', s, re.M)
# 多行模式,影响 ^ 和 $
print(l)
# ['nihao']

l = re.findall('H\w+', s, re.I)
# 忽略字母大小写
print(l)
# ['hello', 'Hello', 'hao', 'hina']

obj.findall(string,pos,endpos)


功能 : 通过正则表达式匹配字符串


参数 : string  目标字符串


        pos  目标字符串的匹配开始位置


  endpos 目标字符串的结束位置


返回值 : 匹配到的所有内容以列表返回


注意:   如果正则表达式有子组则只显示子组匹配内容


#!/usr/bin/env python3
# coding =utf-8

import re

pattern = r'\s+'
# \s+ 匹配任意一个或多个空字符

# 获取正则表达式对象
obj = re.compile(pattern, flags=0)
# flags 标志位 可选可忽略
l = obj.findall("abcdabcabab", 1, 9)
print(l)
# []

obj.split(string)


功能 : 按照正则表达式切割目标字符串


参数 : 目标字符串


返回值 : 切割后的内容


# 匹配目标字符串用(pattern = r'\s+')进行切割
l = obj.split('hello world  hello kitty  nihao china')
print(l)
# ['hello', 'world', 'hello', 'kitty', 'nihao', 'china']

obj.sub(replaceStr,string,max)


功能: 替换正则表达式匹配到的内容


参数: replaceStr 要替换的内容


       string  目标字符串


       max   最多替换几处


返回值 : 返回替换后的字符串


# 替换目标字符串('##')中匹配到的内容
s = obj.sub('##', 'hello world nihao China', 2)
print(s)
# hello##world##nihao China

subn(repl,string,count)


功能: 替换正则表达式匹配到的内容


参数: repl 要替换的内容


       string  目标字符串


       count   最多替换几处


返回值 : 返回替换后的字符串和实际替换的个数

# 返回替换后的字符串和实际替换的个数
s = obj.subn('##', 'hello world nihao China')
print(s)
# ('hello##world##nihao##China', 3)