python 正则表达式基础中的基础(三):

在这里插入图片描述


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())#输出截取结果
#结果就为第一段内容,?尽可能少的获取

多写,多练

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/LJHandCXY/article/details/106871396