match匹配
import re#导入正则表达式库
text = 'aapythonpypy'#要匹配的内容
result = re.match('[py]{4,9}',text)
'''
最少匹配4次,最多匹配9次
match()是从左到右进行一个匹配的,所以匹配不到,为None
'''
print(result)#返回None
print(result.group())#而group()截取就会报错
search
import re#导入正则表达式库
text = 'aapythonpypy'#要匹配的内容
result = re.search('[py]{4,9}',text)#最少匹配4次,最多匹配9次
'''
search()是遍历的意思,找到了就返回,后续还有则不继续匹配
'''
print(result)#返回pypy
print(result.group())#group进行截取
^不同的使用方法
#(1)在[]内的用法
import re#导入正则表达式库
text = 'aapytthon'#要匹配的内容
result = re.search('[^\d]+',text)
'''
\d是匹配数字(0-9)
而^为不匹配数字,也就是说匹配除\d以外的数
+为匹配1次或多次(贪婪模式)
'''
print(result)#打印结果
#结果为aapytthon
print(result.group())#打印截取结果
#(2)不在[]内的用法
result = re.match('^a+',text)
'''
不在括号内就是以a开始以a结束
匹配1次(至少)或多次
'''
print(result)#返回aa,如果不是以aa开头则会返回None
print(result.group())
$的用法
text = '[email protected]'
result = re.search('[\w]+@[a-z0-9]+[.]com$',text)
'''\w匹配数字和字母和下划线,匹配一次或多次
@之后匹配数字和字母
[.]com$就是以它为结尾,如果不为com结尾则会报错
想要我们注意的是(.) 点在[]内为真正的.
而()内为任意匹配字符
'''
print(result)#输出结果:[email protected]
print(result.group())#获取截取的结果
|的用法
#1)在()中的用法
text = 'http://www.baidu.com'
result = re.search('(http|https)://www[.][\w]+[.][com]+',text)
#只要匹配到其中的内容就将它提取出来,就像或,匹配到了则返回
print(result)#输出结果:http://www.baidu.com
print(result.group())#输出截取结果
#2)[|]的用法
result = re.search('[http|https]://www[.][\w]+[.][com]+',text)
print(result)#获取到为1个字符h,因为只要满足一个即为真
result = re.search('[http|https]+://www[.][\w]+[.][com]+',text)
#加上贪婪(+)即可
大家慢慢理解,多写写正则表达式!
贪婪与非贪婪
#贪婪是尽可能的去匹配,直到条件不满足为止
#我们中的加号就是为贪婪(+号:匹配一个或多个)
import re
text = 'python'#要匹配的内容
result = re.match('[a-z]+',text)#匹配项为a-z,+尽可能的匹配,直到不为a-z为止
print(result)#输出匹配内容
print(result.group())#输出截取内容
#非贪婪模式,大家可以理解为尽可能少的匹配,比如?
import re
text = 'python'
result = re.match('[a-z]+?',text)#加上问号就只能匹配0个或1个
print(result)
print(result.group())
举例说明
text = \
'''
<head class = '0'>
<head class = '1'>a</d>
<head class = '2'>b</d>
<head class = '3'>c</c>
</head>
'''
result = re.match('\n<head[\w\W]+>',text)
'''
\n为换行
\w和\W结合就为匹配所有
+为贪婪,所以获取到所以结果'''
print(result)
print(result.group())
result = re.match('\n<head[\w\W]?>',text)#如果我们将+改成?则
print(result)
print(result.group())#输出截取结果
#结果就为第一段内容,?尽可能少的获取