被用来检索\替换那些符合某个模式(规则)的文本,对于文本过滤或规则匹配,最强大的就是正则表达式,是python爬虫里必不可少的神兵利器。

1 正则表达式re基本规则

[0-9] 任意一个数字,等价\d

[a-z] 任意一个小写字母

[A-Z]任意一个大写字母

[^0-9] 匹配非数字,等价\D

\w 等价[a-z0-9_],字母数字下划线

\W 等价对\w取非

. 任意字符

[] 匹配内部任意字符或子表达式

[^] 对字符集合取非

* 匹配前面的字符或者子表达式0次或多次

+ 匹配前一个字符至少1次

? 匹配前一个字符0次或1次

^ 匹配字符串开头

$ 匹配字符串结束

2 python的re模块

几个重要的方法:

match: 匹配一次从开头;

search: 匹配一次,从某位置;

findall: 匹配所有;

split: 分隔;

sub: 替换;

3 正则表达式的两种模式

3.1 贪婪模式:(.*)

import re
str = "hello_python3_world"

re_obj = re.compile(".*_")

data = re_obj.findall(str)
print(data)

# 贪婪模式,一直匹配到最后一个下划线_

3.2 懒惰模式:(.*?)

import re
str = "hello_python3_world"

re_obj1 = re.compile(".?_") #['o_', '3_']
re_obj2 = re.compile(".*?_") #['hello_', 'python3_']

data1 = re_obj1.findall(str)
data2 = re_obj2.findall(str)
print(data1)
print(data2)

# 懒惰模式,匹配到第一个下划线_时即停止继续匹配

4 相关软件

RegexTester.exe

5 正则 BS lxml的比较

6 示例

5.1 示例一

用正则表达式实现下面的效果:

把 i=d%0A&from=AUTO&to=AUTO&smartresult=dict

转换成下面的形式:

i:d%0A

from:AUTO

to:AUTO

smartresult:dict

import re
str = "i=d%0A&from=AUTO&to=AUTO&smartresult=dict"

re_obj = re.compile("&")

data = re_obj.split(str) #data数据存储['i=d%0A', 'from=AUTO', 'to=AUTO', 'smartresult=dict']

m = len(data)
for i in range(m):
    print(data[i])

正则表达式30分钟入门教程

python学习笔记——提取网页中的信息正则表达式re的更多相关文章

  1. python学习笔记——提取网页信息BeautifulSoup4

    1 BeautifulSoup概述 beautifulSoup是勇python语言编写的一个HTML/XML的解析器,它可以很好地处理不规范标记并将其生成剖析树(parse tree): 它提供简单而 ...

  2. python学习笔记——爬虫中提取网页中的信息

    1 数据类型 网页中的数据类型可分为结构化数据.半结构化数据.非结构化数据三种 1.1 结构化数据 常见的是MySQL,表现为二维形式的数据 1.2 半结构化数据 是结构化数据的一种形式,并不符合关系 ...

  3. 1. svg学习笔记-在网页中使用svg

    在网页中使用svg有以下三种方式 1. svg归根结底来说是一种图像格式,虽然有别于jpeg,gif,png等位图图像格式,所以在网页中能嵌入图像的地方都可以嵌入svg,例如将svg文件设置为< ...

  4. 吴裕雄--天生自然python学习笔记:网页解析

    抓取万水书苑网页中所有<a>标签中的超链接井显示. import requests from bs4 import BeautifulSoup url = 'http://www.wsbo ...

  5. python学习笔记——urllib库中的parse

    1 urllib.parse urllib 库中包含有如下内容 Package contents error parse request response robotparser 其中urllib.p ...

  6. python学习笔记013——模块中的私有属性

    1 私有属性的使用方式 在python中,没有类似private之类的关键字来声明私有方法或属性.若要声明其私有属性,语法规则为: 属性前加双下划线,属性后不加(双)下划线,如将属性name私有化,则 ...

  7. Python学习笔记020——数据库中的数据类型

    1 数值类型 数值类型分为有符号signed和无符号unsigned两种. 1.1 整型 int (1)bigint 极大整型(8个字节) 范围 :-2**64 ~ 2**64 - 1 -922337 ...

  8. python学习笔记(excel中处理日期格式)

    涉及到处理excel文件中日期格式数据 这里自己整理下 两种方法 代码如下: @classmethod def get_time(cls, table, nrows): testtime = [] f ...

  9. python学习笔记 改变字符串中的某一位

    a = ' a = list(a) a[2] = ' news = ''.join(a) print news,a 注意不能使用 news = '' news.join(a) 因为news.join只 ...

随机推荐

  1. ERROR: In &lt;declare-styleable&gt; MenuView, unable to find attribute android:preserveIconSpacing

    eclipse  sdk从低版本号切换到高版本号sdk的时候   v7包会包这个错ERROR: In <declare-styleable> MenuView, unable to fin ...

  2. ASP入门(二十)-INSERT、UPDATE、DELETE语句

    插入记录 INSERT INTO 语句 单条记录插入语法 INSERT INTO target [(field1[, field2[, ...]])] VALUES (value1[, value2[ ...

  3. [Canvas]首个小游戏告成

    英雄在地图上射箭杀怪兽,杀完了就胜利了. 点此下载程序试玩. 图例: 代码: <!DOCTYPE html> <html lang="utf-8"> < ...

  4. clearfix 兼容IE6/IE7,解决ie6/ie7下多出一行的问题,bootstrap的clearfix的bug

    .clearfix:before, .clearfix:after { content: "."; display: block; height: ; overflow: hidd ...

  5. Docker Inspect

    1.Inspect结果详细信息 docker inspect 7988f914a122 其中7988f914a122是某一容器进程的id { "Id": "7988f91 ...

  6. Getting in Line UVA 216

     Getting in Line  Computer networking requires that the computers in the network be linked. This pro ...

  7. Mysql prepare 语法

    最近一直使用语句,SELECT auction_id, auction_name,SUM(new_cart),SUM(new_collect),SUM(total_cart),SUM(total_co ...

  8. 高仿美团主界面&lt;一&gt;

    声明:本demo还未完好,正在持续更新中... 先上图吧: 这个小demo资源图片全是用青花瓷抠出来的,如今仅仅是完毕了 一部分. 会持续更行中. . .有兴趣的朋友能够关注我,我们一起coding, ...

  9. Linux 防火墙命令的操作命令CentOS

    service firewalld status; #查看防火墙状态 systemctl start firewalld.service;#开启防火墙 systemctl stop firewalld ...

  10. eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)

            1.前言 首先,本文创作灵感源于博客园园作者signheart,特此鸣谢!原文链接见文末推荐: 百度都搜破了,全网讲的都是如何将maven项目部署到tomcat上,对于热部署的认知,真 ...