字符匹配:
普通字符:
大多数字母和字符一般都会和自身匹配
如正则表达式test会和字符串“test”完全匹配
元字符:
.^ $ * + ? { } [ ] \ | ( )
[]字符集:
-常用来指定一个字符集:[abc]; [a-z]
-元字符在字符集中不起作用:[akm$]
-补集匹配不在区间范围内的字符: [^5]
s = abc
re.findall(s,”abcaaaaaaaaabcaaaaa”)
^-匹配行首。除非设置MULTILINE标志,它只是匹配字符串的开始。在MULTILINE模式里,它也可以直接匹配字符串中的每个换行。
$-匹配结尾。行尾被定义为要么是字符串尾,要么是一个换行字符后面的任何位置。
正则表达式-元字符
\
-反斜杠后面可以加不同的字符以表示不同特殊意义。
-也可以用于取消所有的元字符:\[ 或 \\
\d匹配任何十进制数:它相当于类[0-9].
\D匹配任何非数字字符:它相当于类[^0-9].
\s匹配任何空白字符:它相当于类[\t\n\f\v].
\S匹配任何非空白字符:它相当于类[^\t\n\r\f\v].
\w匹配任何字母数字字符:它相当于类[a-zA-Z0-9].
\W匹配任何非字母数字字符:它相当于类[^a-zA-Z0-9]
\b匹配词边界。
重复:
-正则表达式第一功能是能够匹配不定长的字符集,另一个功能就是你可以指定正则表达式的一部分的重复次数。
*
-指定一个字符可以被匹配零次或更多次,而不是只有一次。匹配引擎会试着重复尽可能多的次数(不超过整数界定范围,20亿)
-a[abc]*b
匹配北京电话010-12345678
r=r”^010-\d\d\d\d\d\d\d\d”r=r”^010-\d{8}”{8}代表数字重复8次。
+
-表是匹配一次或更多次。
-注意*和+之间不同;*匹配零或者更多次,所以可以根本就不出现,而+则要求至少出现一次。
?
-匹配一次或零次;你可以认为它用于标识某事物是可选的。
r=r”^010-?\d{8}$”
r = r”ab+”贪婪匹配r=r”ab+?”非贪婪匹配
{m,n}:
-其中m和n是十进制整数。该限定符的意思是至少有m个重复,至多到n个重复。a/{1,3}b
-忽略m会认为下边界为0,而忽略n的结果将是上边界为无穷大(实际上是20亿)
-{0,}等同于*,{1}等同于+,而{0,1}则与?相同。如果可以的话,最好使用*,+,或?
如何在python使用正则表达式:
importre引入re模块。
最好是编程对象使用。
p_tel=re.compile(r1)
p_tel
输出会产生错误
p_tel.finall()这种形式就是编译。
csvt_re= re.complile (r’csvt’,re.I) 不区分大小写的匹配。
在字符串前面加入r就不会被任何特殊方式处理,应当加r
执行匹配
RegexObject实例有一些方法和属性,完整的列表
sub()、subn()、split()、findall()等做练习。
分组
“(”和”)”
email = r”\w{3}@\w(\.com|\.cn)”分组的应用