re主要用于模式匹配 match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
a = 'www.baidu.com' re.match('baidu',a) re.match('www',a) Out[54]: <_sre.SRE_Match object; span=(0, 3), match='www'> re.match('www',a).group() Out[58]: 'www're.search 扫描整个字符串并返回第一个成功的匹配。
re.search('baidu',a) Out[62]: <_sre.SRE_Match object; span=(4, 9), match='baidu'> re.search('baidu',a).group() Out[63]: 'baidu'使用()提取需要匹配的字符串
re.search(r'www\.(.*?)\.com',a).group() Out[65]: 'www.baidu.com' re.search(r'www\.(.*?)\.com',a).group(1) Out[66]: 'baidu're.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。 re.sub用于替换字符串中的匹配项。
re.sub('baidu','qq',a) Out[67]: 'www.qq.com're.compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
a = 'www.hao123.com' pattern = re.compile(r'\d+') pattern.match(a,0,10) pattern.match(a,7,12) Out[71]: <_sre.SRE_Match object; span=(7, 10), match='123'> pattern.match(a,7,12).group() Out[72]: '123' pattern.search(a,).group() Out[73]: '123'参数: re.I 忽略大小写 re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境 re.M 多行模式 re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符) re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库 re.X 为了增加可读性,忽略空格和 # 后面的注释 eg:
re.search('HAO',a,re.I).group() Out[74]: 'hao're.findall 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
a = 'www.hao123.com' pattern = re.compile(r'\d+') pattern.findall(a) Out[78]: ['123']re.split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:
a = 'www.hao123.com' re.split('\d+',a) Out[80]: ['www.hao', '.com']正则表达式 ^ 匹配字符串的开头 $ 匹配字符串的末尾。* 匹配0个或多个的表达式。 { n, m} 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式。+ 匹配1个或多个的表达式。 re? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 a| b 匹配a或b (re) 对正则表达式分组并记住匹配的文本 [Pp]ython 匹配 “Python” 或 “python” rub[ye] 匹配 “ruby” 或 “rube” [aeiou] 匹配中括号内的任意一个字母 [0-9] 匹配任何数字。类似于 [0123456789] [a-z] 匹配任何小写字母 [A-Z] 匹配任何大写字母 [a-zA-Z0-9] 匹配任何字母及数字 \d 匹配一个数字字符。等价于 [0-9]。 \D 匹配一个非数字字符。等价于 [^0-9]。 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 \w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。 \W 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]’。