re模块

正则表达式是对字符串进行模糊匹配,字符串的方法是绝对匹配或完全匹配

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模块re模块re模块re模块re模块re模块re模块re模块re模块re模块re模块re模块re模块