一.普通字符
二.元字符:有7类
1.字符集(以单个字符划分)以[]表示,[abf]:或者a或者b或者f
[a-z]:匹配a-z之间的字符
[^a-z]:匹配不在a-z之间的字符。
? 2.概括字符集:\d==[0-9]:匹配数字;
? \w:表示该位置上的字符是字母或_;==[A-Za-z_]
? \s:表示该位置上是不可见字符(空格、制表符\t、垂直制 表符\v、回车符\r、换行符\n、换页符\f)==[\f\n\t\r\v]
? 3.数量词有{3}:该字符出现三次/ {3-8}:该字符出现3-8次;
? +:该字符出现次数≥1次;
? ?:该字符出现0次或1次;贪婪模式
? *:该字符出现≥0次;
? . :在默认模式,匹配除了换行的任意字符。如果指定了标签 DOTALL ,它将匹配包括换行符的任意字符
? .*:表示匹配除换行符外的任意字符
? 4.组:提取其中某一连续的满足 某个条件的字符串
? (\d+),增加了()
? 三.match:在用match方法的时候有一个需要注意的地方,很重要,非常容易导致出错,
? match方法是从content第一个字符开始去匹配\d,如果未匹配到,直接就返回None。这里因为content第一个字符不是数字,所以直接返回None
? 四.贪婪跟非贪婪
? .*?表示非贪婪模式:是尽可能少地去匹配字符/匹配的越少,得到的结果越多
? .*表示贪婪模式,尽可能多的去匹配字符,python默认采取的是贪婪模式/匹配的越多得到的结果越少
? 五.search方法和sub方法与match方法的比较:
? 使用match方法,会从content的开头去匹配\d,没有匹配到就直接返回None 了。
? 而search方法也是从头开始匹配,只要匹配到有一个字符符合\d,就直接返回了,不会继 续往下匹配。
? sub方法,这个方法能实现的功能是匹配出结果并替换掉内容
? sub方法设计的精妙之处,就是sub的第二个参数可以是一个函数。就在于当你拿到匹配结果的时候,不一定要将它替换成固定的字符串,
? 你可以传递一个函数,在函数中对匹配结果进行逻辑处理,这样主动权就交到了用户手上,用 户可以随便处理
原文:https://www.cnblogs.com/blogbook/p/14772042.html