参考:

博客园《Python正則表達式指南》

博客园《Python之re模块》

在此感谢博主的无私奉献,本文主要介绍python中re模块的几个简单使用方法。具体的使用方法请參考博客园的这两篇博文

python在文本处理方面是非常强大的,得益于有re这样强大的模块。re模块是用于处理文本的超级强大的工具。当然了。其它语言可能也提供了正則表達式的模块。可是个人感觉python的re模块做的是非常好的

当然了,外行会问了,正則表達式是做什么的呀?听起来玄乎其神的。说白了就是,给你一个非常大的文本文件,让你在里面找符合一定规律的语句,你怎么找呢?比方让你找一个这种语句:ABCDabcd,你或许会说直接用str类的查找就好了。好,那我问你假设让你查找一个这种呢ABCD???

abcd,当中的问号表示随意的一个数字,也就是(ABCD三个数字abcd)这种形式呢?难倒你了吧。哈哈哈,如今使用正則表達式处理这种问题就妥妥的啦

简介一下,使用正則表達式的流程:

A。 初始化一个正則表達式引擎

B, 使用这个引擎在给定的文本里面查找符合条件的结果

先来看一下re模块的语法吧,见下图:

re中的函数:

re.compile(pattern, flags=0)

返回一个正則表達式对象。以下两种写法的作用是等价的:

写法1:

prog = re.compile(pattern)

result = prog.match(string)

写法2:

result = re.match(pattern, string)

re.match(pattern, string, flags=0)

从string的开头进行匹配,假设开头没有匹配成功。则返回None,假设匹配成功,返回且只返回第一个match object(一会再介绍match object的使用方法)

re.search(pattern, string, flags=0)

扫描整个string,假设没有匹配,返回None,否则只返回第一个成功匹配的matchobject

 

re.split(pattern, string, maxsplit=0, flags=0)

通过正則表達式将字符串分离。假设用括号将正則表達式括起来,那么匹配的字符串也会被列入到list中返回。maxsplit是分离的次数。maxsplit=1分离一次,默觉得0,不限制次数。

演示样例:

>>> re.split('\W+', 'Words, words, words.')

['Words', 'words', 'words', '']

>>> re.split('(\W+)', 'Words, words, words.')

['Words', ', ', 'words', ', ', 'words', '.', '']

>>> re.split('\W+', 'Words, words, words.', 1)

['Words', 'words, words.']

>>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)

['0', '3', '9']

或许你可能看起来比較吃力,提示一下:\W表示非单词字符,+号表示匹配前一个字符1次或多次,这样理解起来就easy一些了吧。还有,假设在字符串的開始或结尾就匹配,返回的list将会以空串開始或结尾,假设字符串不能匹配,将会返回整个字符串的list。

 

re.findall(pattern, string, flags=0)

找到RE 匹配的全部子串,并把它们作为一个列表返回。这个匹配是从左到右有序地返回。

假设无匹配。返回空列表(个人认为这个函数是最经常使用的)

re.finditer(pattern, string, flags=0)

搜索string。返回一个顺序訪问每一个匹配结果(matchobject)的迭代器

演示样例:

import re

p = re.compile(r'\d+')

for m in p.finditer('one1two2three3four4'):

print(m.group(),end=’’)

### output ###

# 1 2 3 4

 

re.sub(pattern, repl, string, count=0, flags=0)

使用repl替换string中每个匹配的子串后返回替换后的字符串。

当repl是一个字符串时,能够使用\id或\g<id>、\g<name>引用分组。但不能使用编号0。

当repl是一个方法时。这种方法应当仅仅接受一个參数(Match对象)。并返回一个字符串用于替换(返回的字符串中不能再引用分组)。

count用于指定最多替换次数,不指定时所有替换。

re.subn(pattern, repl, string, count=0, flags=0)

实现的功能跟sub()函数是一样的,可是返回的结果是(new_string,number_of_subs_made)

match object:

匹配对象,这个是match()。search(),finditer()函数返回的值。

属性:

string: 匹配时使用的文本。

re: 匹配时使用的Pattern对象。

pos: 文本中正則表達式開始搜索的索引。

值与Pattern.match()和Pattern.seach()方法的同名參数同样。

endpos: 文本中正則表達式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名參数同样。

lastindex: 最后一个被捕获的分组在文本中的索引。假设没有被捕获的分组,将为None。

lastgroup: 最后一个被捕获的分组的别名。假设这个分组没有别名或者没有被捕获的分组,将为None。

方法:

group([group1, …]): 

获得一个或多个分组截获的字符串。指定多个參数时将以元组形式返回。group1能够使用编号也能够使用别名;编号0代表整个匹配的子串;不填写參数时,返回group(0)。没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。

groups([default]):

以元组形式返回所有分组截获的字符串。

相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默觉得None。

groupdict([default]): 

返回以有别名的组的别名为键、以该组截获的子串为值的字典。没有别名的组不包括在内。

default含义同上。

start([group]): 

返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。

group默认值为0。

end([group]):   

返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0。

span([group]): 

返回(start(group), end(group))。

expand(template): 

将匹配到的分组代入template中然后返回。template中能够使用\id或\g<id>、\g<name>引用分组,但不能使用编号0。

\id与\g<id>是等价的;但\10将被觉得是第10个分组,假设你想表达\1之后是字符'0',仅仅能使用\g<1>0。

版权声明:本文博主原创文章。博客,未经同意不得转载。

Python re正则表达式的更多相关文章

  1. [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

    [python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...

  2. Python 进阶 - 正则表达式

    1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...

  3. python study - 正则表达式

    第 7 章 正则表达式 7.1. 概览 7.2. 个案研究:街道地址 7.3. 个案研究:罗马字母 7.3.1. 校验千位数 7.3.2. 校验百位数 7.4. 使用 {n,m} 语法 7.4.1. ...

  4. python使用正则表达式文本替换

    2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不管是win/linux/mac都有一个简单的运行环境 举两个应用场景: 如果不是在某个文件 ...

  5. python的正则表达式 re

    python的正则表达式 re 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一 ...

  6. Python之正则表达式(re模块)

    本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 正则表达式(Regluar Expressions)又称规则 ...

  7. Python:正则表达式详解

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  8. 【Python】正则表达式纯代码极简教程

    <Python3正则表达式>文字版详细教程链接:https://www.cnblogs.com/leejack/p/9189796.html ''' 内容:Python3正则表达式 日期: ...

  9. 【Python】正则表达式简单教程

    说明:本文主要是根据廖雪峰网站的正则表达式教程学习,并根据需要做了少许修改,此处记录下来以备后续查看. <Python正则表达式纯代码极简教程>链接:https://www.cnblogs ...

  10. 【转】Python之正则表达式(re模块)

    [转]Python之正则表达式(re模块) 本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 参考文档 提示: ...

随机推荐

  1. JDK动态代理简单小程序

    Jdk动态代理 1.动态代理使用的情况:需要在多个方法上加上相同的逻辑的时候,需要用到动态代理. 原因:在多个方法上写相同的逻辑,第一费事,第二在不用的时候维护麻烦 使用动态代理需要用到两个类:分别为 ...

  2. Codeforces 474B Worms 二分法(水

    主题链接:http://codeforces.com/contest/474/problem/B #include <iostream> #include <cmath> #i ...

  3. <Win32_14>__win32控件(2)__教你自学掌握所有控件的玩法

    学习win32 API 编程,我们应该善于利用微软给我们提供的一些辅助工具,例如大家都知道的MSDN.SPY++等等. 今天在讲述之前呢,先给大家介绍一个很有用的工具——Control Spy——它的 ...

  4. iOS学习——iOS国际化(十二)

    开发的移动应用更希望获取更多用户,走向世界,这就需要应用国际化,国际化其实就是多语言.这篇文章介绍Xcode4.5以后的国际化,包括应用名国际化和应用内容国际化.如果是Xcode4.5之前版本请参考. ...

  5. 在Windows下搭建React Native Android开发环境

    widows版本: win7 64位 专业版 1. 安装jdk.(我用的jdk7) 注意选择x86还是x64版本, 添加到系统PATH环境变量 2. 准备好android sdk 这个不多说,同时推荐 ...

  6. 百度词典搜索_dress code

    百度词典搜索_dress code dress code n.着装标准

  7. 折扣&折让-看清实质的思考

    折扣&折让 看清实质的思考 Author:zfive5(zidong) Email:zfive5@163.com 引子 有些东西,在没有人指点的情况,一时理解不了,就放一放,等到某一个契机到来 ...

  8. Android基于发展Service音乐播放器

    这是一个基于Service组件的音乐播放器,程序的音乐将会由后台的Service组件负责播放,当后台的播放状态改变时,程序将会通过发送广播通知前台Activity更新界面:当用户单击前台Activit ...

  9. 为何要fork()两次来避免产生僵尸进程?

    为何要fork()两次来避免产生僵尸进程?   当我们只fork()一次后,存在父进程和子进程.这时有两种方法来避免产生僵尸进程: 父进程调用waitpid()等函数来接收子进程退出状态. 父进程先结 ...

  10. Inno Setup打包添加和去除管理员权限

    原文:Inno Setup打包添加和去除管理员权限 添加管理员权限 1.在[Setup]节点添加 PrivilegesRequired=admin 2.进入安装目录,找到文件SetupLdr.e32, ...