re.search

re.search扫描整个字符串并返回第一个成功的匹配。
该方法有3个参数,第一个就是你写的正则表达式,第二个匹配的目标字符串,第三个是一个匹配模式
re.search(pattern, string, flags=0)

  • 先看一个re.match例子,之后我们对比search。
#我们需要拿到Hello 1234567 World_This is a Regex Demo 这一部分
import recontent = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
result = re.match('Hello.*?(\d+).*?Demo',content)
print(result)

结果:
None

我们发现用match的输出结果是None,也就是说pattern最开头和content字符串最开头是不匹配的。那么整个的匹配就会失败。

  • 接下来看re.search,代码不变,只是re.match变成re.search,来看下结果
import recontent = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
result = re.search('Hello.*?(\d+).*?Demo',content)
print(result)
print(result.group(1))

结果:
<_sre.SRE_Match object; span=(13, 53), match=‘Hello 1234567 World_This is a Regex Demo’>
1234567

也就是说pattern搜索的时候,是从字符串Extra开始的,用match的话,正则表达式从Hello开始是不行的,但用re.search就会搜索,不会管开头一致不一致。

总结:为匹配方便,能用search就不用match,match方法限定匹配时,头部必须是一致的

  • 匹配演练:最后我们做些匹配演练,实战下
import rehtml='''<div id="songs-list"><h2 class="title">经典老歌</h2><p class="introduction">经典老歌列表</p><ul id ="list" class="list-group"><li data-view="2">一路上有你</li><li data-view="7"><a href="/2.mp3" singer="任贤齐">沧海一声笑</a></li><li data-view="4" class="active"><a href="/3.mp3" singer="齐秦">往事随风</a></li><li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li><li data-view="5"><a href="/5.mp3" singer="陈惠琳">记事本</a></li><li data-view="5"><a href="/6.mp3" singer="邓丽君"><i class="fa fa-user"></i>但愿人长久</a></li></ul>
</div>
'''

上面是html代码,要求匹配出 第3个li标签中的齐秦 往事随风 ,代码如下:

result = re.search('<li.*?active.*?singer="(.*?)">(.*?)</a>',html,re.S)#re.S确保.能匹配到换行符
if result:print(result.group(1),result.group(2))

结果:
齐秦 往事随风

我们还要求匹配出第二个li标签中的内容 任贤齐 沧海一声笑

result = re.search('<li.*?singer="(.*?)">(.*?)</a>',html,re.S)
if result:print(result.group(1),result.group(2))

结果:
任贤齐 沧海一声笑

如果匹配时候不需要匹配换行符,那么参数中就没必要带re.S,比如匹配第4个和第5个li标签中的歌手和歌名。但是re.search也仅仅是返回一个符合匹配的结果。如果我们要返回符合匹配的所有结果,要用到re.findall。这一节的re.search就说到这里。

正则系列2: re.search用法相关推荐

  1. python中match的六种用法,python 正则函数match()和search()用法示例

    这篇文章主要为大家详细介绍了python 正则函数match()和search()用法示例,具有一定的参考价值,可以用来参考一下. 对python正则表达式函数match()和search()的区别详 ...

  2. 从一个html页面传值到另一个页面,两个html之间的值传递(js location.search用法)

    从一个html页面传值到另一个页面,两个html之间的值传递(js location.search用法) 转载,点击跳转

  3. python中使用requests库获取昵图网图片,且正则中re.S的用法

    python中使用requests库获取图片,且正则表达式中re.S的用法以及r.text和r.content的区别和搜索关键词 这里我获取的是昵图网的图片 代码附上 这里我获取的是2020的图片 i ...

  4. python中search用法_Python3中正则模块re.compile、re.match及re.search函数用法详解

    本文实例讲述了Python3中正则模块re.compile.re.match及re.search函数用法.分享给大家供大家参考,具体如下: re模块 re.compile.re.match. re.s ...

  5. 正则系列4: re.sub用法

    re.sub 替换字符串中每一个匹配的字串后返回替换后的字符串 该方法主要用的三个参数,第一个参数是匹配模式即正则表达式,也是你要替换的原字符串部分.第二个参数是你需要替换成的字符串.第三个参数是原字 ...

  6. java实现stack search_Java Stack search()用法及代码示例

    Java中的java.util.Stack.search(Object element)方法用于搜索堆栈中的元素并获取其与顶部的距离.此方法从1开始而不是从0开始计数位置.位于堆栈顶部的元素被视为在位 ...

  7. Go基础系列:双层channel用法示例

    Go channel系列: channel入门 为select设置超时时间 nil channel用法示例 双层channel用法示例 指定goroutine的执行顺序 双层通道的解释见Go的双层通道 ...

  8. python search用法,Python-re中search()函数的用法详解(查找ip)

    1.首先来看一下search()和find()的区别 import re s1 = "2221155" #search 字符串第一次出现的位置 print(re.search(&q ...

  9. 正则系列——正则虐我千百遍,我要反抗了

    场景1:验证email是否合法 邮箱种类太多太多,什么net后缀,特殊的我们不做处理,下面我找了常用的一些邮箱: hyy@gmail.com 谷歌邮箱 hyy12@qq.com qq邮箱 hyy-12 ...

最新文章

  1. Windows禁止启动某个程序!偷偷禁止,别人就打不开。。。比如,微信 LOL 吃鸡 爱奇艺
  2. Linux的init进程(内核态到用户态的变化)
  3. 21世纪科技生态面临第三次全球标准
  4. SharePoint数据表组件错误
  5. python下载安装教程mac-数据分析入门~mac 下载及安装 Python 环境
  6. c语言课设学生管理程序,c语言程序课程设计学生成绩管理程序.doc
  7. 怎么样快速学习AngularJS?
  8. Failed to execute goal maven-gpg-plugin 1.5 Sign
  9. 独占设备的分配与回收_灵魂拷问:Java对象的内存分配过程是如何保证线程安全的?...
  10. 利用Python爬取网易上证所有股票数据(代码
  11. python自动安装pip教程_谈谈全自动安装常使用的pip install的原理及作用!!!
  12. git线上服务器_pm2实现git仓库代码一键配置部署到线上服务器
  13. 《穿越计算机的迷雾》读书笔记八
  14. 如何选择合适的工业相机
  15. POJ 3264.Balanced Lineup-RMQ(ST)详解
  16. 本地搭建私有云盘设定:设置群晖共享文件夹以及cpolar 4/5
  17. mybatis一级缓存和二级缓存数据脏读问题
  18. python-老王开枪
  19. gihub上传本地项目简单步骤
  20. 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现)

热门文章

  1. Image Caption Generation原理简介
  2. 达梦创建用户无效的用户名报错2101
  3. 重置ubuntu密码
  4. php+5.3.7++,Windows Server 2008(R2) 一键安装PHP环境(PHP5.3+FastCGI模式
  5. 区块链 liquity源代码分析之一 赎回奖励trove_open_liquidate
  6. 多传感器融合综述---FOV与BEV
  7. 都在发做圣诞树,我来点不一样的,用python给对象戴一顶圣诞帽
  8. 文档拍摄技巧之拍照与如何提高图像质量
  9. 用java代码检查sql语法错误_您的SQL语法有错误;检查与MariaDB服务器版本对应的手册,以便在第1行'?'附近使用正确的语法...
  10. 斯坦福教授告诉你:什么是元学习「 CS330 笔记 (三) 」