正则表达式是对字符串进行模糊匹配, 字符串的方法是绝对匹配或完全匹配
re 用 c 语言编写的匹配引擎执行, 效率高
字符匹配 (普通字符, 元字符), 元字符提供了很多模糊匹配的可能
re 模块之元字符:. ^ $ * + ? {} [] | () \ 都是有特殊意义的字符
re.findall(匹配规则, 匹配字符)
. --> 通配符, 匹配任何一个字符, 除了换行符 \ n
^ --> 尖角号, 字符串的开头匹配内容
$ -->dollar 符, 字符串的结尾匹配内容
* --> 代表紧挨着的字符 0 到无穷次重复的次数 (0,00)
+-->(1,00) 表示 1 到无穷
?-->(0,1)
{ } --> 可取值代表重复次数,{0,1}==? , {0,}== *,{1,}==+,{6} 表示重复六次
[] --> 字符集, 只取一个, 或的意思, 要表示多个加 * + {} , 中括号里没有特殊字符, 除了特殊字符 - ^ \ , 其它变成普通字符.[a-z] 是 a 到 z 的范围,[^a-z] 代表非 a 到 z 的范围
\ --> 转义符, 让有意义的符号变成无意义. 无意义的变成有意义
\b --> 匹配一个特殊字符边界, 比如空格,&,# 等, 注:\b 在 python 里是被标识的, 在 python 里 \ 也是转义符
| --> 表示或的意思
() --> 表示分组, 结果只会显示组里的内容,(?:) 去优先级, 显示全部内容
*,+,? 匹配方式叫做贪婪匹配, 取最多最大的一次, 也就是尽可能匹配, 后面加? 号使其变成惰性匹配即最小匹配
举列: re.findall("\([^()]*\)","12+(34*6+2-5*(2-1)")
re.findall(r"I\b","I am hhj") -->r 表示后面内容不转义
re.findall(r"(abc)+","abcabcabc")
(?P<name>\w+) -->?P 是格式, name 是名字
[] 与 | 比较,| 可以或多个字符,[] 只能或一个字符
re.search() --> 只找第一个满足结果, 匹配成功返回对象, 不成功就什么也不返回, 提取值加 .group()
re.match() --> 同 search, 不过仅在字符串开始处进行匹配, 提取值加 .group()
re.split() --> 分割字符串
re.sub() --> 替换, 需要三个参数, 可再加一个参数 (替换次数)
re.subn() --> 返回替换次数
re.compile() --> 编译规则, com=re.compile("\d+") 可直接使用 com.findall("字符串内容")
re.finditer() --> 返回一个迭代器对象, next(ret).group() --> 取值
re 模块
来源: http://www.bubuko.com/infodetail-3067977.html