文档章节

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

a
 alphabeta
发布于 2015/10/21 23:14
字数 704
阅读 49
收藏 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从小白到大牛》专题视频课程,送配套纸质图书

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

tony关东升
07/23
0
0
Python 正则表达式(字符)详解

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

jamesjoshuasss
2017/03/01
0
0
Python处理正则表达式超时的办法

title: Python处理正则表达式超时的办法 tags: [python3, 正则表达式超时, re模块] date: 2018-04-27 21:40:21 categories: Python keywords: python3, 正则表达式, re模块, linux信号 最近在...

PigPeek
04/27
0
0
【译】自己动手写Django app,第三部分【完】

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

davidxp
2013/02/25
0
0
Python 字符串和正则表达式的使用

1.字符串 1.1字符串的格式化 #格式化语法"%s" % str1"%s %s" % (str1,str2) #格式化字符串 str1 = "version"num = 1.0format = "%s" % str1print (format)format = "%s %d" %(str1, num)prin......

阿豪boy
02/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
46分钟前
0
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部