1.匹配标签

 1 import re
2 ret = re.search('<(?P<tag_name>\w+)>\w+</(?P=tag_name)>','<h1>hello</h1>')
3 #还可以在分组中利用?P<name>的形式给分组起名字
4 #获取的匹配结果可以直接用group('名字')拿到对应的值
5 print(ret.group())
6 print(ret.group('tag_name'))
7
8
9 # -------------------------
10 ret = re.search(r'<(\w+)>\w+</\1>','<h1>hello</h1>')
11 #如果不给分组起名字,也可以用\序号来找到对应的组,表说要找的内容和前面的组的内容一致
12 #获取的匹配结果可以直接用group(序号)拿到对应的值
13 print(ret.group())
14 print(ret.group(1))

匹配标签

2.匹配整数

 1 import re
2 ret = re.findall(r'\d+',"1-2*(60+(-40.35/5)-(-4*3))")
3 print(ret)
4
5 import re
6 ret = re.findall(r'-?\d+\.\d*|(-?\d+)',"1-2*(60+(-40.35/5)-(-4*3))")
7 print(ret)
8
9 ret.remove('')
10 print(ret)

数字匹配

3.数字匹配

 1 # 3.数字匹配
2 # 1.匹配一段文本中的每行的时间字符串,比如’1990-07-12‘
3
4 # 1.分别取出一年的十二个月:
5 while True:
6 cmd = input('请输入月份:>>')
7 if re.match(r'^(0?[1-9]|1[0-2])$',cmd):
8 print('格式正确')
9 else:
10 print('格式错误')
11
12 # 2.
13 ret =re.match(r'^(0?[1-9]|1[0-2])$','11')
14 print(ret.group())
15
16 # 一个月的31天
17 ret = re.match(r'^((0?[1-9])|((1|2)[0-9])|30|31)$','31')#从头匹配
18 print(ret.group())
19
20 # 匹配QQ号
21 while True:
22 cmd = input('请输入你扣扣号:>>')
23 if re.match(r'^[1-9][0-9]{4,10}$',cmd):
24 print('输入正确')
25 else:
26 print('输入错误')
27
28 # 浮点数
29 ret = re.match(r'-?\d+\.?\d*','21.5')
30 print(ret.group())

数字匹配

4.爬虫练习

 1 import requests
2
3 import re
4 import json
5
6 def getPage(url):
7
8 response=requests.get(url)
9 return response.text
10
11 def parsePage(s):
12
13 com=re.compile('<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>'
14 '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>',re.S)
15
16 ret=com.finditer(s)
17 for i in ret:
18 yield {
19 "id":i.group("id"),
20 "title":i.group("title"),
21 "rating_num":i.group("rating_num"),
22 "comment_num":i.group("comment_num"),
23 }
24
25 def main(num):
26
27 url='https://movie.douban.com/top250?start=%s&filter='%num
28 response_html=getPage(url)
29 ret=parsePage(response_html)
30 print(ret)
31 f=open("move_info7","a",encoding="utf8")
32
33 for obj in ret:
34 print(obj)
35 data=json.dumps(obj,ensure_ascii=False)
36 f.write(data+"\n")
37
38 if __name__ == '__main__':
39 count=0
40 for i in range(10):
41 main(count)
42 count+=25

re模块练习的更多相关文章

  1. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  2. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  3. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  4. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  5. Python标准模块--Unicode

    1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...

  6. Python标准模块--Iterators和Generators

    1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...

  7. 自己实现一个javascript事件模块

    nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...

  8. 理解nodejs模块的scope

    描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...

  9. nodejs模块发布及命令行程序开发

    前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...

  10. 开始学nodejs——net模块

    net模块的组成部分 详见 http://nodejs.cn/api/net.html 下面整理出了整个net模块的知识结构,和各个事件.方法.属性的用法 net.Server类 net.Socket ...

随机推荐

  1. 014——VUE中v-if语法在网站注册中的实际应用

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 条款25:考虑写出一个不抛出异常的swap函数

    首先说下标准库的swap算法: namespace std{ template<typename T> void swap(T & a, T & b) { T tmp = ...

  3. commond prompt CD

    如果要进入目前所在盘符的其他路径用cd命令可进入,但如果从c盘进入d盘等,是不用cd命令的. 如目前在c盘的任意目录,需要切换到d盘的根目录,用:“d:”命令(不含引号),如图: cd命令简介: 第一 ...

  4. SpringMVC札集(01)——SpringMVC入门完整详细示例(上)

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  5. Ganymed实现基本的自动化部署API

    Ganymed SSH-2 for Java是一个纯Java实现的SHH2库,官网为http://www.ganymed.ethz.ch/ssh2/,最新的更新时间为2006年10月,在用之前,请仔细 ...

  6. Creating a Game with CocosBuilder

    Creating a Game with CocosBuilder This tutorial aims to show how you can use CocosBuilder together w ...

  7. 人生苦短之我用Python篇(深浅拷贝、常用模块、内置函数)

    深浅拷贝 有时候,尤其是当你在处理可变对象时,你可能想要复制一个对象,然后对其做出一些改变而不希望影响原来的对象.这就是Python的copy所发挥作用的地方. 定义了当对你的类的实例调用copy.c ...

  8. 【java规则引擎】java规则引擎搭建开发环境

    Drools官网:http://www.jboss.org/drools Drools and jBPM consist out of several projects:(Drools软件包提供的几个 ...

  9. noip积木大赛

    先要覆盖一号位置的高度,(现在你的目的只是想要覆盖一号位置). 每次你可以选区间[l,r]高度+1,这个作为一个操作. 为什么不选的范围大一点,让更多的区间增加高度呢. 所以红色的地方是,在我的目的是 ...

  10. RESTful Get方式传参json格式后端400 解决方案

    前端采用vue+axios 后端采用spring boot restful 问题: 前端get 请求需要传递array 字段值 后端由于tomcat 版本问题,不支持url接受特殊字符包括 [] {} ...