文档章节

python正则表达式——常用函数

a
 alphabeta
发布于 2015/10/21 23:14
字数 704
阅读 51
收藏 1

re.compile()

python re模块提供了一个正则表达式引擎接口,可以将REString编译成对象,并用编译好的对象来匹配。如果一个正则表达式经常用来做匹配,那么可以编译,这样速度更快。

  • 基本用法如下:
>>> import re
>>> p = re.compile("c[a-g]t")
>>> print(p)
<_sre.SRE_Pattern object at 0x11e6420>
>>> p.findall("cat cbtt")
['cat', 'cbt']
  • 可以接受可选标志参数,实现不同的特殊功能和语法变更。

re.I 不区分大小写 ......

>>> p = re.compile("c[a-g]t", re.I)
>>> p.findall("cat cBTt")
['cat', 'cBT']
  • 反斜杠

re.match()

若RE在字符串开始的位置匹配,则返回一个'matchObject'实例(对象);否则返回None。 通常用法是将match的返回值赋给一个变量,然后判断这个变量是否在None。 当然,返回的matchObject也有一些类方法,这里暂时省略,以后补充。

>>> p = re.compile("abc")
>>> mo = p.match("aaaaabcdrfg")
>>> p = re.compile("abc")
>>> mo1 = p.match("aaaaabcdrfg")
>>> mo2 = p.match("abcdrfg")
>>> print(mo1) #RE没有出现在字符串的开头,因此为None
None
>>> print(mo2)
<_sre.SRE_Match object at 0x12425e0>
>>> mo3 = p.search("aaaaabcdrfg")
>>> mo4 = p.search("abcdrfg")
>>> print(mo3)
<_sre.SRE_Match object at 0x1309b28>
>>> print(mo4)
<_sre.SRE_Match object at 0x1309b90>

re.search()

扫描字符串,找到RE匹配的位置,成功则返回一个'matchObject'实例(对象);否则返回None。

re.findall()

找到RE匹配的所有子串,并把他们作为一个列表返回。

re.finditer()

找到RE匹配的所有子串,并把他们作为一个迭代器返回。

re.sub()

sub(pattern, repl, string, count=0, flags=0) Return the string obtained by replacing the leftmost non-overlapping occurrences of the pattern in string by the replacement repl. repl can be either a string or a callable; if a string, backslash escapes in it are processed. If it is a callable, it's passed the match object and must return a replacement string to be used.

>>> re.sub(r"a", "b", "haha") # count=0或者省略表示全部替换
'hbhb'
>>> re.sub(r"a", "b", "haha", 0)
'hbhb'
>>> re.sub(r"a", "b", "haha", 1)# count=1表示全部替换1次
'hbha'

这里与字符串函数replace区别就是,re.sub()的pattern支持正则表达式,使用更加灵活

re.subn()

subn(pattern, repl, string, count=0, flags=0) Return a 2-tuple containing (new_string, number). new_string is the string obtained by replacing the leftmost non-overlapping occurrences of the pattern in the source string by the replacement repl. number is the number of substitutions that were made. repl can be either a string or a callable; if a string, backslash escapes in it are processed. If it is a callable, it's passed the match object and must return a replacement string to be used.

>>> re.subn(r"a", "b", "haha") #参数与sub一样
('hbhb', 2)
>>> re.subn(r"a", "b", "haha", 1)
('hbha', 1)
>>> re.subn(r"a", "b", "haha", 2)
('hbhb', 2)

返回一个两个元素的元组,第一个元素表示替换后的结果,第二个元素表示替换的次数。

re.split()

split(pattern, string, maxsplit=0, flags=0) Split the source string by the occurrences of the pattern, returning a list containing the resulting substrings. 这个函数与字符串的split区别就是这里的pattern支持正则表达式,使用更加灵活。

>>> re.split(r"[a-f]", "afternoon")
['', '', 't', 'rnoon']

© 著作权归作者所有

共有 人打赏支持
a
粉丝 1
博文 2
码字总数 715
作品 0
杭州
私信 提问
Python 正则表达式——re模块介绍

Python 正则表达式 re 模块使 Python 语言拥有全部的正则表达式功能,re模块常用方法: re.match函数 re.match从字符串的起始位置匹配,如果起始位置匹配不成功,则match()就返回none。,如果...

糖宝lsh
11/21
0
0
Python 正则表达式(字符)详解

Python正则表达式 — 简介  其实正则表达式这种技术,源于一个很简单的问题:    如何通过变成使得计算机具有在文本中检索某种模式的能力?   而正则表达式为通过编程实现高级的文本模式...

jamesjoshuasss
2017/03/01
0
0
买《Python从小白到大牛》专题视频课程,送配套纸质图书

经过一年多时间的呕心沥血,Python立体化图书——《Python从小白到大牛》即将与大家见面了。所谓立体化图书包括:电子图书、视频、课件和服务等内容。 《Python从小白到大牛》纸质图书将于9...

tony关东升
07/23
0
0
【译】自己动手写Django app,第三部分【完】

原文地址:https://docs.djangoproject.com/en/1.4/intro/tutorial03/ 这个教程是从教程2留下的地方开始的。我们继续这个基于网络调查应用程序并且将关注与创建一个公共接口——“view”。 ...

davidxp
2013/02/25
0
0
Python第三章模块-张明阳-专题视频课程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a2011480169/article/details/83580545 Python第三章模块—142人已学习 课程介绍 介绍Python在项目当中常用的...

安静的技术控
04/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 分布式链路跟踪 Sleuth + Zipkin + Elasticsearch

随着业务越来越复杂,系统也随之进行各种拆分,特别是随着微服务架构的兴起,看似一个简单的应用,后台可能很多服务在支撑;一个请求可能需要多个服务的调用;当请求迟缓或不可用时,无法得知...

编程SHA
13分钟前
1
0
Swift-清除缓存

func removeCache (){ // 取出cache文件夹路径.如果清除其他位子的可以将cachesDirectory换成对应的文件夹 let cachePath = NSSearchPathForDirectoriesInDomains(FileMan...

west_zll
13分钟前
1
0
kl键盘事件

frameworks/base/data/keyboards路径下定义了很对kl文件。如Vendor_0416_Product_0300.kl,定义了某某遥控器的按键事件 # TVkey 103 DPAD_UPkey 108 DPAD_DOWNkey 105 DPAD_LEFTk...

安卓工程师王恒
17分钟前
1
0
CentOS 7 安装 Docker

工具: Oracle VM VirtualBox 虚拟机 ,本地电脑win10 系统: 虚拟机装 centos 7 前置条件: Docker 要求 CentOS 系统的内核版本高于 3.10 1. 通过 uname -r 命令查看当前的内核版本 2. 如果不够...

_大侠__
27分钟前
1
0
webrtc onAddStream回调流程

背景 webrtc代码基于M59 正文 1. 回调设置和处理 (1)java层先在监听器中实现回调处理函数,如下所示: private class PCObserver implements PeerConnection.Observer { @Override...

bill_shen
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部