split 方法
split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:
split(string[, maxsplit])其中,maxsplit 用于指定最大分割次数,不指定将全部分割 。
看看例子:
import rep = re.compile(r'[s,;]+')print (p.split('a,b;; c d'))执行结果:
['a', 'b', 'c', 'd']sub 方法
sub 方法用于替换 。它的使用形式如下:
sub(repl, string[, count])其中,repl 可以是字符串也可以是一个函数:
如果 repl 是字符串,则会使用 repl 去替换字符串每一个匹配的子串,并返回替换后的字符串,另外,repl 还可以使用 id 的形式来引用分组,但不能使用编号 0;
如果 repl 是函数,这个方法应当只接受一个参数(Match 对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组) 。
count 用于指定最多替换次数,不指定时全部替换 。
看看例子:
import rep = re.compile(r'(w+) (w+)') # w = [A-Za-z0-9]s = 'hello 123, hello 456'print (p.sub(r'hello world', s)) # 使用 'hello world' 替换 'hello 123' 和 'hello 456'print (p.sub(r'2 1', s)) # 引用分组def func(m): print(m) return 'hi' + ' ' + m.group(2) #group(0) 表示本身,group(1)表示hello,group(2) 表示后面的数字print (p.sub(func, s)) #多次sub,每次sub的结果传递给funcprint (p.sub(func, s, 1)) # 最多替换一次执行结果:
hello world, hello world123 hello, 456 hellohi 123, hi 456hi 123, hello 456匹配中文在某些情况下,我们想匹配文本中的汉字,有一点需要注意的是,中文的 unicode 编码范围 主要在 [u4e00-u9fa5],这里说主要是因为这个范围并不完整,比如没有包括全角(中文)标点,不过,在大部分情况下,应该是够用的 。
假设现在想把字符串 title = u’你好,hello,世界’ 中的中文提取出来,可以这么做:
import retitle = '你好,hello,世界'pattern = re.compile(r'[\u4e00-\u9fa5]+')result = pattern.findall(title)print (result)注意到,我们在正则表达式前面加上了两个前缀 ur,其中 r 表示使用原始字符串,u 表示是 unicode 字符串 。
执行结果:
['你好', '世界']注意:贪婪模式与非贪婪模式贪婪模式:在整个表达式匹配成功的前提下,尽可能多的匹配 ( * );
非贪婪模式:在整个表达式匹配成功的前提下,尽可能少的匹配 ( ? );
Python里数量词默认是贪婪的 。
示例一 : 源字符串:abbbc
使用贪婪的数量词的正则表达式 ab*,匹配结果: abbb 。
- 决定了尽可能多匹配 b,所以a后面所有的 b 都出现了 。
即使前面有 *,但是 ? 决定了尽可能少匹配 b,所以没有 b 。
示例二 : 源字符串:
aa<div>test1</div>bb<div>test2</div>cc使用贪婪的数量词的正则表达式:<div>.*</div>匹配结果:<div>test1</div>bb<div>test2</div>这里采用的是贪婪模式 。在匹配到第一个"“时已经可以使整个表达式匹配成功,但是由于采用的是贪婪模式,所以仍然要向右尝试匹配,查看是否还有更长的可以成功匹配的子串 。匹配到第二个”“后,向右再没有可以成功匹配的子串,匹配结束,匹配结果为”<div>test1</div>bb<div>test2</div>"
使用非贪婪的数量词的正则表达式:<div>.*?</div>
匹配结果:<div>test1</div>
正则表达式二采用的是非贪婪模式,在匹配到第一个""时使整个表达式匹配成功,由于采用的是非贪婪模式,所以结束匹配,不再向右尝试,匹配结果为"<div>test1</div>" 。
推荐阅读
- Python内部参数中对外部实参的影响
- python图像识别之图片相似度计算
- Python爬虫基础:验证码的爬取和识别详解
- Python 实现docx文件的读写操作
- Python算法中的时间复杂度
- 用 Python 监控知乎和微博的热门话题
- 什么是GUI,Python GUI常用库汇总
- python包Numpy基础:索引和切片
- python中的文件夹操作
- Python 带你采集抖音无水印视频内容,把你喜欢的视频保存
