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 Chinasubn(repl,string,count)
功能: 替换正则表达式匹配到的内容
参数: repl 要替换的内容
string 目标字符串
count 最多替换几处
返回值 : 返回替换后的字符串和实际替换的个数
# 返回替换后的字符串和实际替换的个数 s = obj.subn('##', 'hello world nihao China') print(s) # ('hello##world##nihao##China', 3)