什么是正则表达式对象
re.compile(r"\d{3,9}")
re.compile(r"^test\w*", re.I)
re.compile(r"^t.*", re.S)
正则表达对象的方法
Pattern.search(string[, pos[, endpos]])
- 查找该正则表达式产生匹配的第一个位置并返回匹配对象,如果没有匹配到则返回None,
- pos参数指定开始搜索的位置索引,默认为0,
- endposc参数指定字符串搜索的结束位置
pattern = re.compile("s")
pattern.search("test")
pattern.search("test",1,3)
pattern.search("test",1,2)
pattern = re.compile("s.*")
pattern.search("test")
Pattern.match(string[, pos[, endpos]])
- 如果字符串开头的零个或多个字符与此正则表达式匹配,则返回匹配对象, 否则返回None
pattern = re.compile("s.*")
pattern.match('test')
pattern = re.compile("t.*")
pattern.match('test')
Pattern.fullmatch(string[, pos[, endpos]])
- 如果整个 string 与此正则表达式匹配,则返回匹配对象, 否则返回None
pattern = re.compile("t.*")
pattern.fullmatch('test')
pattern = re.compile("t.?")
pattern.fullmatch('test')
Pattern.split(string, maxsplit=0)
- 用 pattern 分开 string,返回分割后的元素列表
- maxsplit不等于0时,表示最多分割多少次
pattern = re.compile("s")
pattern.split('test')
pattern = re.compile(r"\W+")
pattern.split('auto test, test')
pattern.split('auto test, test', 1)
pattern = re.compile(r"(\W+)")
pattern.split('auto test, test')
Pattern.findall(string[, pos[, endpos]])
- 返回 pattern 在 string 中的所有非重叠匹配结果, 字符串列表或字符串元组列表的形式
- 如果未匹配到返回空列表[]
pattern = re.compile(r"\W+")
pattern.findall('auto test, test')
pattern = re.compile(r"(\w+)=(\d+)")
pattern.findall('width=20, height=10')
pattern.findall('width=20, height=10',0, 10)
pattern.findall('width=20, height=10',0, 5)
Pattern.finditer(string[, pos[, endpos]])
- 用法同findall, 不过返回的是匹配对象的迭代器
Pattern.sub(repl, string, count=0)
- 返回通过 repl 替换在 string 最左边非重叠出现的 pattern 而获得的字符串
- 如果没有匹配的则返回原string
- repl可以是一个字符串也可以是函数
pattern = re.compile(r"\W+")
pattern.sub("-", 'auto test, test')
pattern.sub("-", 'auto test, test', 1)
pattern = re.compile(r"\s")
pattern.sub("-", 'autotest,test')
def dashrepl(matchobj):
... if matchobj.group(0) == '-': return ' '
... else: return '-'
pattern.sub(dashrepl, 'pro----gram-files')
Pattern.subn(repl, string, count=0)
- 和sub() 相同,但是返回的是一个元组 (字符串, 替换次数).
pattern = re.compile(r"\W+")
pattern.subn("-", 'auto test, test')
正则表达式对象的属性
- Pattern.flags:正则匹配标记
- Pattern.groups: 捕获到的模式串中组的数量
- Pattern.groupindex: 映射由 (?P<id>) 定义的命名符号组合和数字组合的字典
- Pattern.pattern :返回正则表达式对象的原始字符串
pattern = re.compile(r"\W")
pattern.groups
pattern = re.compile(r"(\W)")
pattern.groups
pattern = re.compile(r"(\W) (\w)")
pattern.groups
pattern.pattern
pattern = re.compile(r"(?P<one>\W) (?P<two>\w)")
pattern.groupindex
非重叠匹配 & 重叠匹配
import regex
regex.findall('ab.*',"ab abtest")
regex.findall('ab.*',"ab abtest", overlapped=True)