Python中正则表达式的使用

原创 2016年01月22日 17:24:50

正则表达式是一种非常强大的工具,是用来对文本(字符串)的匹配,搜索的利器,一门好的语言都不可缺少这一模块,在Python中,re模块就集成了所有正则表达式的功能

关于正则表达式的语法,在这里就不赘述了,本文主要讲一些python中的实例用法:

首先,把re模块中所有的函数和方法在此列举一番:match,search,findall,split.sub,group,groups,compile

1.match(p,s)

一般是两个参数,p:正则表达式(也相当于一个字符串);s:要匹配的字符串

从头开始匹配正则表达式,从p的第一个字符开始匹配,匹配中就输出匹配到的内容,没有就返回None

import re
m = re.match('[a-z]=[0-9]','ssaa=0jinleib=1')   //匹配不到

m = re.match('[a-z]=[0-9]','a=0jinleib=1')   //匹配到'a=0'

2.search(p,s)

跟match的唯一区别就是,它不是从头开始匹配,

import re
m = re.search('[a-z]=[0-9]','ssaa=0jinleib=1')   //匹配到'a=0',但是不会输出b=1,因为它只返回一个匹配到结果

3.group,groups

之所以把这两个函数放在这个位置,是因为你match或者search完之后,想知道自己匹配到的内容是什么,就要用到group,groups。

看上面的例子,m是返回值,它的类型是一个对象,直接输出是看不到结果的,所以就要用到m.group(),或者m.groups()。这样就会输出一个字符串

再说说group和groups的区别:只有正则表达式p中有用'()'括起来的内容,并且匹配成功,用groups才会有结果,要不然都是None,而group都可以用,只不过当正则表达式p中有用'()'括起来的内容时,group会有一个参数,是整数类型,如果是1,就输出p中第1个用'()'括起来的匹配到的内容,以此类推,类似于数组,只不过不是从0开始。

4.findall

参数,和match,search一样,不同的是它返回的是一个列表list,里面含有所有匹配到内容,下面两个例子:

>>>re.findall('car','the car is so carry the barcarid')

['car','car','car']       //匹配到所有的car

import re
m = re.findall('([a-z])=([0-9])','ssaa=0jinleib=1') 

结果:[ ('a','0'), ('b','1') ]      //注意,列表里面的元素已经变成元组了,而元组里面的元素分别是p中两个()括起来的内容,这里就是用()和不用()的区别

5.split

参数还是一样,一个p,一个s。但是要注意一点的是,千万不要和字符串的内建函数(也叫)split混淆!

相信大家对字符串的split函数很熟悉:s='jinlei' s.split('l',s) = [ 'jin', 'ei' ]

这个split的功能是根据正则表达式所能匹配的字符串来分割字符串:

str = '   1.7  2.3 4    123'
alist = re.split(r'\s+',str)
print alist         //猜猜结果是什么?没错[ '','1.7','2.3','4','123' ]。\s表示空格符,以一个或者多个空格为分隔符分割字符串str。

6.sub(p,rep_s,s)

功能:用替代字符串rep_s代替用正则表达式p在目标字符串s上匹配到的内容。

>>>re.sub('X','me','is X')

'is me'       //输出结果

7.compile(p)

一般只是一个参数,它的功能就是编译正则表达式p,它返回一个regex对象

reg = re.compile('d')

reg.match('sd')  //没有匹配到

reg.match('d')   //匹配到d,

返回结果和上面直接用match函数一样,是一个对象,或者None。


好了,有了这些,只要你清楚正则表达式的基本语法,以及在python中一些特殊字符,多加练习,python的正则表达式就能手到擒来啦!!

版权声明:本文虽为博主原创文章,但可随意转载。

Python3 如何优雅地使用正则表达式(详解一)

注:本文翻译自 Regular Expression HOWTO,小甲鱼童鞋对此做了一些注释和修改。 正则表达式介绍 正则表达式(Regular expressions 也称为 R...
  • goodboy5201314
  • goodboy5201314
  • 2015年01月12日 14:23
  • 3097

Python3 如何优雅地使用正则表达式(详解二)

使用正则表达式 现在我们开始来写一些简单的正则表达式吧。Python 通过 re 模块为正则表达式引擎提供一个接口,同时允许你将正则表达式编译成模式对象,并用它们来进行匹配。 小甲鱼解释:...
  • goodboy5201314
  • goodboy5201314
  • 2015年01月12日 14:28
  • 2150

Python正则表达式:如何使用正则表达式

正则表达式(简称RE)本质上可以看作一个小的、高度专业化的编程语言,在Python中可以通过re模块使用它。使用正则表达式,你需要为想要匹配的字符串集合指定一套规则,字符串集合可以包含英文句子、e-m...
  • liuy_98_1001
  • liuy_98_1001
  • 2015年06月08日 18:22
  • 3338

python使用正则表达式编写网页小爬虫

""" 文本处理是当下计算机处理的主要任务,从文本中找到某些有用的信息, 挖掘出某些信息是现在计算机程序大部分所做的工作。而python这中轻量型、小巧的语言包含了很多处理的函数库, 这些库的跨...
  • liuguiyangnwpu
  • liuguiyangnwpu
  • 2015年04月09日 22:13
  • 9437

Python 使用正则表达式 - 1

正则表达式 python
  • hjh00
  • hjh00
  • 2015年08月19日 16:20
  • 1041

Python 爬虫 正则抽取网页数据和Scrapy简单使用

Python新手 前些天看了一些基本语法发现继续看下去效果甚微(枯(ji)燥(mo)了) 知乎上面的大神 都说爬虫 那我就从爬虫开始实践学习吧 先从简单的静态的一个页面开始干什么都得按照套路来 ...
  • liubo080852
  • liubo080852
  • 2016年01月21日 16:55
  • 2414

Python爬虫实践(十一):selenium+phantomjs+正则表达式爬取文章并保存

爬取的是三联生活周刊的这篇文章: 英国"脱欧":蝴蝶的翅膀动了(url:点击打开链接) 一、环境准备: 系统:Ubuntu IDE:wingide 安装以及破解wingide可参考这篇文章:点击打...
  • horseinch
  • horseinch
  • 2016年06月26日 22:27
  • 2155

python正则表达式系列(1)——正则元字符

本文主要介绍python中正则表达式的基本用法,做一个初步的认识。
  • dnxbjyj
  • dnxbjyj
  • 2017年04月22日 07:49
  • 423

python异常处理与调试,正则表达式

####异常处理与调试#### 1.cacl包里没加if __name__ == "__main__":时,hell.py在调用mun中的方法时,会执行mun中的print,加了之后则没有。 2....
  • Adhuyanchong
  • Adhuyanchong
  • 2017年07月17日 16:42
  • 175

python爬虫提取信息:正则表达式和xpath

由于作者水平有限,只写出相关关键词,并未给出详细解释。 爬虫主要是两个功能,一是访问网页,二是从网页中提取数据。事实上访问网页基本都是调用接口直接就可以访问,而从网页中正确地提取数据是主要工作量所...
  • qq_22905955
  • qq_22905955
  • 2017年06月20日 17:26
  • 735
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python中正则表达式的使用
举报原因:
原因补充:

(最多只允许输入30个字)