一、常用符号

  . :匹配任意字符,换行符\n除外

   * :匹配前一个字符0次或无限次

    ? :匹配前一个字符0次货1次

  .* :贪心算法

  .*? :非贪心算法

  () :括号内的数据作为结果返回

二、常用方法

  findall:匹配所有符合规律的内容,返回包含结果的列表

  Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象(object)

  Sub :替换符合规律的内容,返回替换后的值

三、代码示例

 1 # coding=utf-8
2 import re
3 secret_code = "hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse"
4
5 # .的使用
6 a = "xy123"
7 b = re.findall("x..",a)
8 c = re.findall("x...",a)
9 print b
10 print c
11 # .就是一个占位符,几个.就表示几个字符
12
13
14 # *的使用
15 a = "xyxy123"
16 b = re.findall("x*",a)
17 print b
18
19 # ?的使用
20 a = "xy1x2x3"
21 b = re.findall("x?",a)
22 print b
23
24 # .*的使用举例
25 b = re.findall("xx.*xx",secret_code)
26 print b
27 c = re.findall("xx.*?xx",secret_code)
28 print c
29
30 # ()的使用
31 b = re.findall("xx(.*?)xx",secret_code)
32 print b
33 for str in b:
34 print str
35
36
37 # re.S 使.能包含\n
38 s = '''sdfxxhello
39 xxfsdfxxworldxxasdf'''
40 d = re.findall("xx(.*?)xx",s,re.S)
41 print d
42
43 # 对比findall与search的区别
44 s2 = "asdfxxIxx123xxlovexxdfd"
45 f = re.search("xx(.*?)xx123xx(.*?)xx",s2).group(1)
46 print f
47 f2 = re.findall("xx(.*?)xx123xx(.*?)xx",s2)
48 print f2[0][0]
49
50 # sub的使用
51 s2 = "123abcssfasdfas123"
52 output = re.sub("123(.*?)123","123789123",s2)
53 print output
54
55 # 匹配纯数字
56 s2 = "asdfasf1234567fasdfas"
57 b = re.findall("(\d+)",s2)
58 print b

四、制作简单文本爬虫--爬取百度图片首页分类图片并下载

  实现原理:

    1、保存网页代码

    2、Python读文件加载代码

    3、正则表达式提取图片网址

    4、下载图片

  代码如下所示:

  

 # coding=utf-8
import re
import requests
#读取源代码文件
f = open("baidu.txt","r")
html = f.read();
f.close() #匹配图片网址 #先爬大再爬小
url = re.findall('<div class="wrapper_detail_box">(.*?)<div class="wrapper_footer_box">',html,re.S)[0]
pic_url = re.findall('img src="(.*?)" class="img_pic_layer"',url)
i = 0
for each in pic_url:
print 'now downloading:' + each
#获取图片
pic = requests.get(each) #保存图片
fp = open("pic\\"+str(i)+".jpg","wb")
fp.write(pic.content)
fp.close()
i += 1

正则表达式在python中的应用的更多相关文章

  1. 正则表达式与Python中re模块的使用

    正则表达式与Python中re模块的使用 最近做了点爬虫,正则表达式使用的非常多,用Python做的话会用到re模块. 本文总结一下正则表达式与re模块的基础与使用. 另外,给大家介绍一个在线测试正则 ...

  2. 常用正则表达式与python中的re模块

    正则表达式是一种通用的字符串匹配技术,不会因为编程语言不一样而发生变化. 部分常用正则表达式规则介绍: . 匹配任意的一个字符串,除了\n * 匹配任意字符串0次或者任意次 \w 匹配字母.数字.下划 ...

  3. 【归纳】正则表达式及Python中的正则库

    正则表达式 正则表达式30分钟入门教程 runoob正则式教程 正则表达式练习题集(附答案) 元字符\b代表单词的分界处,在英文中指空格,标点符号或换行 例子:\bhi\b可以用来匹配hi这个单词,且 ...

  4. 正则表达式在python中的简单使用

    正则表达式独立与编程语言,基本上所有的编程语言都实现了正则表达式的相关操作.在Python中正则表达式的表现为re模块: import re 其操作有三个方法: my_string = "h ...

  5. js中正则表达式与Python中正则表达式的区别

    今天女票让我帮她写一个js中的正则,来提取电话号码,对于正则规则来说,js与python是基本没有区别的,重点的区别是在一些函数与方法中. python中的正则提取: import re str = ...

  6. 正则表达式与python中re模块

    一个网站,正则表达式入门的,很好 http://www.jb51.net/tools/zhengze.html 下面这个包含对python中re的介绍,也是很不错的http://www.w3cscho ...

  7. 正则表达式和python中的re模块

    ---恢复内容开始--- 常用的正则匹配规则 元字符 量词 字符组 字符集 转义符 贪婪匹配 re模块使用正则表达式 实例引入(是否使用re模块和正则表达式的区别) # 不使用正则表达式 phone_ ...

  8. 在python中使用正则表达式

    一.转义符 1.在python中的转义符 (1)\\n与\n的区别 (2)r"\next" 通过r来进行转义 (3)"\\\\d"与"\\d" ...

  9. python中正则表达式

    正则表达式是一种通用的字符串匹配技术,是不会因为编程语言不一样而发生变化的如果想查找对应规则的字符串,就可以用正则表达式python中要使用正则表达式需使用re模块,它是正则表达式在python中的封 ...

随机推荐

  1. Okhttp3的简单使用

    1.get请求: /** * *okhttp get请求 * */ public class MainActivity extends AppCompatActivity { private stat ...

  2. ubuntu-docker-consul-swarm-shipyard-portainer

    --- env --- root@node1:~# cat /etc/issueUbuntu 12.04.4 LTS \n \l root@node1:~# docker -vDocker versi ...

  3. pwd命令

    [pwd]      打印当前的工作目录             pwd==print work director 命令格式: pwd [OPTION]... 命令功能: 打印当前工作目录的全路径 命 ...

  4. Linux下多线程下载利器 axel

    参考 https://teddysun.com/377.html 使用示例: axel -an https://ubuntu-mate.org/raspberry-pi/ubuntu-mate-16. ...

  5. maven学习(下)利用Profile构建不同环境的部署包

    接上回继续,项目开发好以后,通常要在多个环境部署,象我们公司多达5种环境:本机环境(local).(开发小组内自测的)开发环境(dev).(提供给测试团队的)测试环境(test).预发布环境(pre) ...

  6. C#可空类型

    C#创建可空类型对于有些可选类型的时候特别好用.创建可空类型用法直接上图. 执行效果 用法 运行效果

  7. React学习笔记-7-销毁阶段

    销毁阶段可以使用的函数:componentWillUnmount:在删除组件之前进行清理操作,比如计时器和事件监听器.因为这些函数都是开发者手动加上去的,react不知道,必须进行手动清理. 实例第一 ...

  8. Erlang--proplists结构解析

    proplists 模块适用数据量较少的场景,处理配置文件和函数选项时常用.proplists对内部数据结构是Key-Value键值对形式,第一个元素做key用来查询和删除,如果一个key有多个值就会 ...

  9. Linux Yum 安装JDK

    1.查看CentOS自带JDK是否已安装. 输入:yum list installed |grep java. 2.若有自带安装的JDK,如何卸载CentOS系统自带Java环境? 卸载JDK相关文件 ...

  10. Linux远程服务器上安装SVN

    前言 SVN服务器有2种运行方式:独立服务器和借助apache.2种方式各有利弊,独立SVN服务器不结合Apache安装使用,连接独立SVN服务器也不用HTTP协议.这是比较快捷的SVN服务器配置方法 ...