1、普通字符和11个元字符:
字符集。对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c]。[^abc]表示取反,即非abc。所有特殊字符在字符集中都失去其原有的特殊含义。用\反斜杠转义恢复特殊字符的特殊含义。
这里需要强调一下反斜杠\的作用:
2、预定义字符集(可以写在字符集[...]中)
匹配\w和\W之间,即匹配单词边界匹配一个单词边界,也就是指单词和空格间的位置。
例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
3、特殊分组用法:
1、compile()
编译正则表达式模式,返回一个对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率。)
格式:
pattern: 编译时用的表达式字符串。
flags 编译标志位,用于修改正则表达式的匹配方式,如:是否区分大小写,多行匹配等。常用的flags有:
2、match()
决定RE是否在字符串刚开始的位置匹配。//注:这个方法并不是完全匹配。当pattern结束时若string还有剩余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符'$'
格式:
3、search()
格式:
*注:match和search一旦匹配成功,就是一个match object对象,而match object对象有以下方法:
4、findall()
格式:
5、finditer()
搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。找到 RE 匹配的所有子串,并把它们作为一个迭代器返回。
格式:
6、split()
按照能够匹配的子串将string分割后返回列表。
格式:
maxsplit用于指定最大分割次数,不指定将全部分割。
7、sub()
使用re替换string中每一个匹配的子串后返回替换后的字符串。
格式:
8、subn()
返回替换次数
格式:
subn(pattern, repl, string, count=0, flags=0)
2、贪婪匹配与非贪婪匹配
*?,+?,??,{m,n}? 前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配