文章目录
表格实例|^$\数字是1 ~ 99:数字是0:[…………]{}贪婪模式匹配非贪婪模式匹配\bfindall注意:实例1实例2实例3实例4如何消除findall这种返回方法表格
实例
|
re.search(r'dog(C|D)','dogC')re.search(r'dog(C|D)','dogD')
^
必须以脱字符后面的字符为输入字符串的开始位置,才能匹配成功
re.search(r'^dog(C|D)','dogD')re.search(r'^dog(C|D)','l like dogD')
$
必须以这个字符前面的字符为输入字符串的结束位置,才能匹配成功
re.search(r'dog(C|D)$','l like dogD')
\
解除元字符的特殊功能:\.
匹配的就是一个.
\后面如果加数字的话,如果数字是1 ~ 99,那么它表示的引用序号对应的子组所匹配的字符串;如果跟着的数字是0或者是三位的数字,那么它是一个八进制数字,表示的是这个八进制数据所对应的ASCII码的字符
数字是1 ~ 99:
re.search(r'(dogD)\1','dogDdogD')
\1相当于dogD,因为这里1号子组就是dogD(用括号括了起来)
数字是0:
re.search(r'(dogD)\060','dogD0')re.search(r'(dogD)\060','dogDdogDdogD')
切记是八进制!
re.search(r'(dogD)\141','dogDa')
[…………]
re.search(r'[.]','dogDa.txt')
re.search(r'\.','dogDa.txt')
re.findall(r'[a-z]','')
re.findall(r'[\n]','\n')
最前面的脱字符(表示后面字符除外的字符):
re.findall(r'[^a-z]','PdogL.Zcom\n')
最后面的脱字符(表示匹配脱字符本身):
re.findall(r'[a-z^]','^PdogL.Zcom\n')
{}
re.search(r'dogD{3}','dogDDDD')
re.search(r'(dogD){3}','dogDdogDdogD')
注意:
正则表达式里面不能随意加空格。。
贪婪模式匹配
p='<html><title>l love </title></html>'re.search(r'<.+>',p)
非贪婪模式匹配
p='<html><title>l love </title></html>'re.search(r'<.+?>',p)
\b
re.findall(r'\bdogD\b','!dogD_com(dogD)')
这里所匹配出来的是,
第一个:前面这个
dogD
第二个:(dogD)
这个dogD
至于下横线这里,被认为连着一个单词,并不是单词边界(.
和()
是边界),
\t是TAB键,\n是换行键,\r是回车,\f表示换页,\v表示垂直的制表符
findall
注意:
如果给出的正则表达式包含子组的话,那么就会把子组的内容单独返回回来;如果存在多个子组,那么就会把匹配内容组合成元组的形式来进行返回
实例1
p=r'dogD(fish)'html='dogDfishabcd'iplist=re.findall(p,html)iplist
实例2
p=r'dogD(fish)'html='dogDfishfishfish'iplist=re.findall(p,html)iplist
实例3
p=r'(dogD)(fish)'html='dogDfishfishfish'iplist=re.findall(p,html)iplist
实例4
p=r'(([0,1]?\d?\d|2[0-4]\d|25[0-5])\.){3}([0,1]?\d?\d|2[0-4]\d|25[0-5])'html='192.168.1.1 192.135.124.125 192.168.126.124're.findall(p,html)
如何消除findall这种返回方法
p=r'(?:(?:[0,1]?\d?\d|2[0-4]\d|25[0-5])\.){3}(?:[0,1]?\d?\d|2[0-4]\d|25[0-5])'html='192.168.1.1 192.135.124.125 192.168.126.124're.findall(p,html)