正则表达式是描述文本序列的标准表达方式,在文本处理中用正则表达式来描述文本中的字符串。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。匹配时不会重复匹配其子串。
1.用字符表示字符
1.基础符号【均只能匹配一个字符】
str(' ') |
正则表达式(' ')【'\'均有特殊意义】 |
指定数字 如:‘1’ | 与之相同 【 '1'】 |
指定字母 如::‘a' | 与之相同 【 'a'】 |
指定特殊符号 如:指定'-' | 需加上转义符'\' 【'\-'】 |
指定多种字符【析取】 如:'a'或’b' | '[ ]' 【'[ab]'】 |
表示范围 如:1-3之间的数字 | '-' 【'[1-3]'】【需与析取配合使用】 |
指定非这些字符的字符【非】 如: 非'a' 且 非'b' |
'^'(脱字符) 【'[^ab]'】【需与析取配合使用,且脱字符在开方括号的第一个位置才有效】 |
空白 | ‘$’ 【只能放在结尾处】 |
'一个数字' | '\d' 或 '\w' |
'一个字母' | '\w' |
'一个字符' | '.'(通配符) |
‘一个空格’(包括Tab等空白符) | ‘\s' |
2.拓展符号【均需与基础符号组合使用,且只对前一个符号有效】
str(' ')【其中的某可不指定具体符号如:整数、字母等】 |
正则表达式(' ')【k为某字符】 |
’某字符可有可无'【0/1个】 |
'k?' |
'至少一个某字符' | 'k+' |
'n个某字符' | 'k{n}' |
'n-m个某字符' | 'k{n,m}' |
'任意个某字符' | 'k * ‘ |
2.用正则表达式提取字符串中的某些子串
功能 | 函数 | 参数解释 | 返回值 |
判断字符串中是否存在与正则表达式匹配的子串 【该子串起始位置为0,既从头开始匹配】 |
re.match(partten,string,flags=0) |
partten:正则表达式 string:被匹配的字符串 |
若匹配成功则返回一个match对象,否则返回None |
判断字符串中是否存在与正则表达式匹配的子串 【该子串起始位置为任意,起点不一定为0】 |
re.search(partten,string,flags=0) | partten:正则表达式 string:被匹配的字符串 |
若匹配成功则返回一个match对象,否则返回None |
提取string中所有匹配正确的子串 | re.findall(partten,string,flags=0) | partten:正则表达式 string:被匹配的字符串 |
若匹配成功则返回一个非空list,否则返回[ ] |