$的问题

匹配行尾,行尾被定义为要么是字符串尾,要么是一个换行字符后面的任何位置。

>>> print re.search('}$', '{block}')
<re.MatchObject instance at 80adfa8>
>>> print re.search('}$', '{block} ')
None
>>> print re.search('}$', '{block}\n')
<re.MatchObject instance at 80adfa8>

关于 match 与 search

match( ) 匹配的是字符串的开始,如果有不在字符串开始但是匹配给定模式的子字符串,用match不能匹配;而search()可以用来匹配在任意地方的子字符串

>>> re.match("c", "abcdef")    # No match
>>> re.search("c", "abcdef")   # Match
<_sre.SRE_Match object; span=(2, 3), match='c'>

而用 ^ 可以限定search所搜索的地方是字符串的开始处

>>> re.match("c", "abcdef")    # No match
>>> re.search("^c", "abcdef")  # No match
>>> re.search("^a", "abcdef")  # Match
<_sre.SRE_Match object; span=(0, 1), match='a'>

在 MULTILINE 模式中,match( )也只能匹配字符串的最开始,而search()可以匹配每行的匹配字符。

>>> re.match('X', 'A\nB\nX', re.MULTILINE)  # No match
>>> re.search('^X', 'A\nB\nX', re.MULTILINE)  # Match
<_sre.SRE_Match object; span=(4, 5), match='X'>

再来几个例子

>>> str="2007 log_a\n2008 log_b\n2009 log_c"
>>> m = re.match("^\d.*$") # no match
>>> m = re.match("^\d.*", str) # match 2007 log_a
>>>> m = re.match("^\d.*$", str, re.M) # match 2007 log_a
>>> m = re.search("^\d.*", str) # match 2007 log_a
>>> m = re.search("^\d.*$", str) # no match
>>> m = re.search("^\d.*$", str, re.M) # match 2007 log_a
>>> print(re.findall("^\d.*$", str))
[]
>>> print(re.findall("^\d.*$", str, re.M))
['2007 log_a', '2008 log_b', '2009 log_c']

简单总结一下,#不一定对#
首先,match( )和search( )都只能匹配到一个字符串,即使是在MULTIPLE模式下也只能匹配到一个字符串。区别在于match( )只能匹配字符串的开头处,而search( )可以匹配不用的地方,所以search( )在MULTIPLE模式下会按顺序查找,返回第一个找到匹配的字符串。在需要查找许多匹配的字符串的时候,还是要通过findall( )来查找。同时还需要注意$与re.M的问题,当没有re.M的情况下,$表明为只是简单的整个字符串的末尾,而有re.M的条件下,$表示每一行的结尾。

匹配不包含的字符串

>>> str='<input type="text" id="xxx" name="xxx" value="xxx" />\n<input type="hidden" id="xxx" name="xxx" value="xxx" /> '
>>> m =re.findall("^(?!.*?hidden).*?$", str, re.M)
>>> print(m)
['<input type="text" id="xxx" name="xxx" value="xxx" />']
>>> m =re.findall("^(?!.*?hidden.*?$)", str, re.M)
>>> print(m)
['']

爬虫之路——DAY2相关推荐

  1. python爬虫之路自学教程_python 爬虫学习之路

    2016-6-18 --今天实现了第一个用urllib2实现的爬虫程序. --过程中发现 req = urllib2.Request(url,headers = headers) 总是报错: 主要原因 ...

  2. Python之网络爬虫(爬虫基本认知、网络爬虫之路)

    文章目录 一.爬虫基本认知 二.爬虫之路 初级爬虫工程师 中级爬虫工程师 高级爬虫工程师 一.爬虫基本认知 1.爬虫的简单定义 网络爬虫,又称为网页蜘蛛.蚂蚁.蠕虫.模拟程序,在FOAF社区中,被称为 ...

  3. 用python爬取基金网信息数据,保存到表格,并做成四种简单可视化。(爬虫之路,永无止境!)

    用python爬取基金网信息数据,保存到表格,并做成四种简单可视化.(爬虫之路,永无止境!) 上次 2021-07-07写的用python爬取腾讯招聘网岗位信息保存到表格,并做成简单可视化. 有的人留 ...

  4. 教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!!

    教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!! 代码展示: 开发环境: windows10 python3.6 开发工具: pycharm weddriver 库: sel ...

  5. Python小白的进阶之路---Day2

    Python小白的进阶之路---Day2 1. 列表 1.1 标志 1.2 基本操作 (1)创建列表 (2)向列表添加元素 (3)从列表删除元素 (4)拷贝 1.3列表相关方法 2.元祖 2.1标志 ...

  6. 如何自学python爬虫-菜鸡的Python爬虫之路(一)如何零基础自学Python

    我在这里就假设大家已经有了一定的计算机编程基础,具有一定的编程思想(如果没有的话我会在另写一篇文章关于如何入门编程) 说起来尴尬,其实我是没有资格"教"的,我天赋不行,脑子也比较笨 ...

  7. python 运维自动化之路 Day2

    学习内容: 1.模块初识 2.Pyc是什么 3.Python数据类型 4.数据运算 5.bytes数据类型 6.列表和元组的使用 7.字符串常用操作 8.字典的使用 1.模块初识 如果用 python ...

  8. python爬虫之路scrapy

    python里面的yield怎么用? yield from是什么意思? scrpay The best way to learn is with examples, and Scrapy is no ...

  9. 一个咸鱼的python_一个咸鱼的Python爬虫之路(三):爬取网页图片

    学完Requests库与Beautifulsoup库我们今天来实战一波,爬取网页图片.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图. 所以我找了这个网站 http: ...

  10. python requests库详解_python爬虫之路(一)-----requests库详解

    requests库 requests库是python实现的最简单易用的http库. requests库的功能详解. 我们可以自然而然地想到这些方法其实就是http协议对资源的操作. 调用request ...

最新文章

  1. KEIL5.11安装小结
  2. 关于error:Cannot assign to 'self' outside of a method in the init family
  3. 16.实现多个具有相同方法的接口和父类与实现接口有相同方法
  4. 数据库的语言——SQL
  5. 2006年4月全国计算机等级考试二级Java语言程序设计
  6. leetcode - 141. 环形链表(哈希表)
  7. 修而未复:说说WebLogic那修不完的Java反序列化漏洞
  8. Fedora上配置一个安全FTP
  9. Datawhale 零基础入门CV赛事-Task3 字符识别模型
  10. table表框去掉相邻的间隔
  11. atitit.验证码识别step2------剪贴板ClipBoard copy image图像 attilax总结
  12. wordpress各种获取url函数总结
  13. JSP项目155套-开发专题-大作业设计-毕业设计【建议在校生收藏】(保持更新)
  14. IOS免越狱安装历史版本APP软件
  15. python中的iter函数_如何使用python中iter函数?
  16. 如何搭建OpenOCD环境基于Window10+Cygwin?
  17. SAE J3016:驾驶自动化分级(2021年4月,中文版)
  18. 5 种全局 ID 生成方式、优缺点及改进方案
  19. 新书问答:Software Wasteland
  20. 鸿蒙三部曲 吞噬星空,我吃西红柿最新作品竟然是它?看来鸿蒙金榜第四名已有归属...

热门文章

  1. 面试精选逻辑推理题总结
  2. vue 动态加载阿里云字体图标库
  3. Web前端 学习知识点总结(十二)jQuery进阶 表单验证和简单正则表达式
  4. java servlet容器有哪些_Java Web —— servlet 容器
  5. 互联网常见域名后缀含义
  6. PS下载 PS2021中文版下载 Photoshop2021中文版22.5.1 ACR14.0最新
  7. python 序列去重并保持原始顺序
  8. html实现tab 左右滑动
  9. uView项目前端获取屏幕高度
  10. libcef和js交互