正则表达式在python中的应用
一、常用符号
. :匹配任意字符,换行符\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中的应用的更多相关文章
- 正则表达式与Python中re模块的使用
正则表达式与Python中re模块的使用 最近做了点爬虫,正则表达式使用的非常多,用Python做的话会用到re模块. 本文总结一下正则表达式与re模块的基础与使用. 另外,给大家介绍一个在线测试正则 ...
- 常用正则表达式与python中的re模块
正则表达式是一种通用的字符串匹配技术,不会因为编程语言不一样而发生变化. 部分常用正则表达式规则介绍: . 匹配任意的一个字符串,除了\n * 匹配任意字符串0次或者任意次 \w 匹配字母.数字.下划 ...
- 【归纳】正则表达式及Python中的正则库
正则表达式 正则表达式30分钟入门教程 runoob正则式教程 正则表达式练习题集(附答案) 元字符\b代表单词的分界处,在英文中指空格,标点符号或换行 例子:\bhi\b可以用来匹配hi这个单词,且 ...
- 正则表达式在python中的简单使用
正则表达式独立与编程语言,基本上所有的编程语言都实现了正则表达式的相关操作.在Python中正则表达式的表现为re模块: import re 其操作有三个方法: my_string = "h ...
- js中正则表达式与Python中正则表达式的区别
今天女票让我帮她写一个js中的正则,来提取电话号码,对于正则规则来说,js与python是基本没有区别的,重点的区别是在一些函数与方法中. python中的正则提取: import re str = ...
- 正则表达式与python中re模块
一个网站,正则表达式入门的,很好 http://www.jb51.net/tools/zhengze.html 下面这个包含对python中re的介绍,也是很不错的http://www.w3cscho ...
- 正则表达式和python中的re模块
---恢复内容开始--- 常用的正则匹配规则 元字符 量词 字符组 字符集 转义符 贪婪匹配 re模块使用正则表达式 实例引入(是否使用re模块和正则表达式的区别) # 不使用正则表达式 phone_ ...
- 在python中使用正则表达式
一.转义符 1.在python中的转义符 (1)\\n与\n的区别 (2)r"\next" 通过r来进行转义 (3)"\\\\d"与"\\d" ...
- python中正则表达式
正则表达式是一种通用的字符串匹配技术,是不会因为编程语言不一样而发生变化的如果想查找对应规则的字符串,就可以用正则表达式python中要使用正则表达式需使用re模块,它是正则表达式在python中的封 ...
随机推荐
- 48. 二叉树两结点的最低共同父结点(3种变种情况)[Get lowest common ancestor of binary tree]
[题目] 输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点. 二叉树的结点定义如下: C++ Code 123456 struct BinaryTreeNode { int ...
- C# 金钱 小写转大写的算法
调用 ConvertMoney的ConvertMoneyToWords(decimal money)方法即可 using System; using System.Collections.Generi ...
- 利用html5、websocket和opencv实现人脸检测
最近学习人脸识别相关的东西,在MFC下使用OpenCV做了一个简单的应用.训练需要较多的数据,windows应用程序终究还是不方便,于是想着做成CS模式:检测识别都放在服务器端,视频获取和显示都放在网 ...
- Java笔记:有啥记啥
构造方法可以初始化,也可以在调用的时候传参 1android需要java什么水平 2java封装
- iOS开发之如何跳到系统设置里的各种设置界面
跳到更多设置界面 除了跳到WiFi设置界面,能不能跳到其他的设置界面呢?比如:定位服务.FaceTime.音乐等等.都是可以的,一起来看看如何实现的! 定位服务 定位服务有很多APP都有,如果用户关闭 ...
- for_each(c++11)
http://www.cplusplus.com/reference/algorithm/for_each/ template<class InputIterator, class Functi ...
- PHP项目实现手机端和PC端的页面切换
目前访问页面的要切换成手机端和PC端,原理是通过对设备作出判断,显示不同的功能和页面. 如果手机端和PC端的功能结构不相同,一般会写两套系统,一套适用于PC端,一套适用于手机端. 如果功能相同,则只需 ...
- 那些年,坑死自己的事之fread/fwrite
今天继续看牛人做过的东西,这个小程序并不大,加上相当多的注释行,才5000多行.这个小程序是在linux下实现的,之前自己也一直用vi来看并加以更加详细的注释,但是效率实在太低.于是将其转移到wind ...
- 在Linux下配置多线路ADSL的方法
经过一段时间的观察,证明运行良好,现把设置过程及方法总结一下,欢迎指正.此文档可以说明双ADSL及多ADSL增加线路的配置过程. 实验环境: 操作系统: RedHat7.3 两条ADSL,长期观察线路 ...
- python-opencv笔记 图像的读取和简单几何图形绘制