1.经常使用符号

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

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

?

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

.*  :贪心算法。尽可能的匹配多的字符

.*?  :非贪心算法

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

2.经常用法

findall:匹配全部符合规律的内容。返回包括结果的列表

Search:匹配并提取第一个符合规律的内容,返回一个正則表達式对象

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

3.使用演示样例

3.1  . 的使用举例,匹配随意字符,换行符 \n 除外

import re      #导入re库文件
a = 'xy123'
b = re.findall('x..',a)
print b

打印的结果为:['xy1'] 。每一个 . 表示一个占位符

3.2   * 的使用举例。匹配前一个字符0次或无限次

a = 'xyxy123'
b = re.findall('x*',a)
print b

打印的结果为:['x', '', 'x', '', '', '', '', '']

3.3  ? 的使用举例,匹配前一个字符0次或1次

a = 'xy123'
b = re.findall('x? ',a)
print b

打印的结果为:['x', '', '', '', '', '']

3.4  .* 的使用举例

secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse'
b = re.findall('xx.*xx',secret_code)
print b

打印的结果为:['xxIxxfasdjifja134xxlovexx23345sdfxxyouxx']

3.5  .*?的使用举例

secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse'
c = re.findall('xx.*? xx',secret_code)
print c

打印的结果为:['xxIxx', 'xxlovexx', 'xxyouxx']

3.6  ()的使用举例

secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse'
d = re.findall('xx(.*?)xx',secret_code)
print d

打印的结果为:['I', 'love', 'you']  。括号内的数据作为返回的结果

3.7  re.S的使用举例

s = '''sdfxxhello
xxfsdfxxworldxxasdf'''
d = re.findall('xx(.*?)xx',s,re.S)
print d

打印的结果为:['hello\n', 'world']  ,re.S的作用是使 . 在匹配时包含 \n

3.8 findall的使用举例

s2 = 'asdfxxIxx123xxlovexxdfd'
f2 = re.findall('xx(.*?)xx123xx(.*?)xx',s2)
print f2[0][1]

打印的结果为:love

     这时f2为含有一个元组的列表,该元组包括两个元素,该元组中的两个元素为两个()匹配到的内容,假设s2包括多个'xx(.*?

)xx123xx(.*?

)xx'这种子串。则f2包括多个元组

3.9 search的使用举例

s2 = 'asdfxxIxx123xxlovexxdfd'
f = re.search('xx(.*?)xx123xx(.*? )xx',s2).group(2)
print f

打印的结果为:love

    .group(2) 表示返回第二个括号匹配到的内容,假设是 .group(1), 则打印的就是:I

3.10 sub的使用举例

s = '123rrrrr123'
output = re.sub('123(.*?)123','123%d123'%789,s)
print output

打印的结果为:123789123

     当中的%d类似于C语言中的%d,假设 output=re.sub('123(.*?

)123','123789123',s),输出结果也为:123789123

3.11 \d 的使用举例。用于匹配数字

a = 'asdfasf1234567fasd555fas'
b = re.findall('(\d+)',a)
print b

打印的结果为:['1234567', '555']   , \d+  能够匹配数字字符串



Python爬虫之正則表達式的更多相关文章

  1. python使用正則表達式

    python中使用正則表達式 1. 匹配字符 正則表達式中的元字符有 .  ^  $ *   +  ?  { }  [ ]  \  | ( ) 匹配字符用的模式有 \d 匹配随意数字 \D 匹配随意非 ...

  2. python 学习笔记 10 -- 正則表達式

    零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...

  3. Python正則表達式:怎样使用正則表達式

    正則表達式(简称RE)本质上能够看作一个小的.高度专业化的编程语言,在Python中能够通过re模块使用它.使用正則表達式,你须要为想要匹配的字符串集合指定一套规则,字符串集合能够包括英文句子.e-m ...

  4. python进阶十_正則表達式(一)

    近期状态一直不太好,至于原因,怎么说呢,不好说,总之就是纠结中覆盖着纠结,心思全然不在点上,希望能够借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想,假设真的是我自己的问题呢,曾经我 ...

  5. python re 正則表達式

    夜深了.敲击键盘.用CSDN整理下python   re 正則表達式是含有文本和特别字符的字符串,这些文本和特别字符描写叙述的模式能够识别各种字符串. 一下我们从实例结合理论来学习理解吧... 经常使 ...

  6. 正則表達式re中的贪心算法和非贪心算法 在python中的应用

    之前写了一篇有关正則表達式的文章.主要是介绍了正則表達式中通配符 转义字符 字符集 选择符和子模式 可选项和反复子模式 字符串的開始和结尾 ,有兴趣的能够查看博客内容. 此文章主要内容将要介绍re中的 ...

  7. Python学习笔记8:标准库之正則表達式

    Python拥有强大的标准库.从如今起,開始学习标准库中提供的一些经常使用功能. 首先看正則表達式(regular expression),它的主要功能是从字符串(string)中通过特定的模式(pa ...

  8. Python——正則表達式(2)

    本文译自官方文档:Regular Expression HOWTO 參考文章:Python--正則表達式(1) 全文下载 :Python正則表達式基础 ======================== ...

  9. Python正則表達式小结(1)

    学习一段python正則表達式了, 对match.search.findall.finditer等函数作一小结  以下以一段网页为例,用python正則表達式作一个范例: strHtml = '''& ...

随机推荐

  1. 使用Lucene对预处理后的文档进行创建索引(可执行)

    时间: 2015/3/18 杨鑫newlife 对于文档的预处理后.就要開始使用Lucene来处理相关的内容了. 这里使用的Lucene的过程例如以下: 首先要为处理对象机那里索引 二是构建查询对象 ...

  2. Mule ESB-3.Build a webservice proxy

    自从引入ESB后,系统之间不再直接依赖.我负责的这块,主要是解决Webservice的问题.使系统A不再直接依赖系统B的Webservice. 我们选择的产品是Mule ESB.所以自然要使用Mule ...

  3. [HTML5] 新标签解释及用法

    转自:http://www.cnblogs.com/yuzhongwusan/archive/2011/11/17/2252208.html HTML 5 是一个新的网络标准,目标在于取代现有的 HT ...

  4. Codeforces Round #512 (Div. 2) D.Vasya and Triangle 数学

    题面 题意:给你n,m,k,在你在(0,0)到(n,m)的矩形内,选3个格点(x,y都是整数),使得三角形面积为n*m/k,不能找到则输出-1 题解:由毕克定理知道,格点多边形的面积必为1/2的整数倍 ...

  5. 在ubuntu中安装Markdown神器Typora

    title: 在ubuntu中安装Markdown神器Typora toc: false date: 2018-09-01 17:48:15 categories: methods tags: ubu ...

  6. BZOJ 1507 splay

    写完维修数列 这不是水题嘛233333 //By SiriusRen #include <cstdio> #include <cstring> #include <alg ...

  7. 开发手机APP过程,不同使用场景APP搜索框的样式及区别

    搜索框是 app 内最常见的控件之一,可以帮助用户快速又精准找到期望的内容与功能.不同的使用场景下,根据页面中搜索的重要程度,搜索框也有着不同的样式. 下面就常州开发APP公司和大家聊聊常见的四种样式 ...

  8. 基于S3C2440数码相框

    [参考]韦东山 教学笔记 1. 程序框架1.1 触摸屏: 主按线程,通过socket发给显示进程 --------------------------- 封装事件:ts线程 按键线程 -------- ...

  9. JDK1.7源码阅读tools包之------ArrayList,LinkedList,HashMap,TreeMap

    1.HashMap 特点:基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 Has ...

  10. VS2012编译PCL1.70的过程

    以防博主删除文档,重新copy一遍... 关于个人的几个注意事项: 对于boost,可以使用vc100的库,来编译VC110的代码: 对于确实的包含,一个一个添加,要耐心等待!!! 原文链接:http ...