一、常用符号

  . :匹配任意字符,换行符\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. paxos(chubby) vs zab(Zookeeper)

    参考: Zookeeper的一致性协议:Zab Chubby&Zookeeper原理及在分布式环境中的应用 Paxos vs. Viewstamped Replication vs. Zab ...

  2. 在CentOS 7 中 安装 VSFTP

    在线安装:yum install -y vsftpd 使用yum 进行卸载:yum -y remove vsftpd 编辑配置:vi /etc/vsftpd/vsftpd.conf 查看FTP进程是否 ...

  3. ScriptedSandbox64.exe 在写Winform程序Debug时不停提交数据

    抓包时发现不停的在提交数据,导致抓包内容看不到. 取消方式:Tools -> Options -> Debugging -> General -> Enable Diagnos ...

  4. shell:遍历目录和子目录的所有文件

    #!/bin/bash function getdir(){ ` do dir_or_file=$"/"$element if [ -d $dir_or_file ] then g ...

  5. struts2笔记(3)

    关于回显: 如果是int型,默认就会回显为0,如果不想让回显,则Integer就好 //**************************************声明式验证************* ...

  6. cxf WebService设置wsdl中soapAction的值

    用cxf开发一个WebService很简单,只需要下面几步: 1.定义接口 public interface HelloService { String hello(); } 2.实现 public ...

  7. qt5.5程序打包发布以及依赖【转】

    玩qt5也有一段时间了,惭愧的是一直没有好好的发布过程序,因为写的都是小程序没啥需要用到发布,而且qt也说不上很熟悉,本来打算到基本掌握qt之后再来研究研究怎么打包程序,最近晚上的空闲时间多了,闲着也 ...

  8. [Android Pro] http://blog.csdn.net/wuyinlei/article/category/5773375

    http://blog.csdn.net/wuyinlei/article/category/5773375

  9. cnetos7.0 安装mysql

    CentOS 7的yum源中貌似没有正常安装mysql时的mysql-sever文件,需要去官网上下载 [root@localhost ~]# wget http://dev.mysql.com/ge ...

  10. Ubuntu架设FTP

    1.安装vsftpd >sudo apt-get install vsftpd 2.安装好ftp后默认是会自动创建ftp用户的,然后我们设置ftp用户的密码 >sudo passwd ft ...