Python正则表达式入门进阶(4)

在前面主要学习了怎么样匹配成功,都没有修改原来的内容的。现在来学习一个匹配成功之后修改相应的内容,在这里使用sub()函数来实现这个功能,同时使用引用组号来插入原来的字符,例子如下:
#python 3.6
#
import re
 
bold = re.compile(r'\*{2}(.*?)\*{2}')
 
text = 'Make this **cai**.  This **junsheng**.'
 
print('Text:', text)
print('Bold:', bold.sub(r'<b>\1</b>', text))

结果输出如下:
Text: Make this **cai**.  This **junsheng**.
Bold: Make this <b>cai</b>.  This <b>junsheng</b>.

5.python里使用正则表达式来替换匹配成功的组名

在前面学习了找到组之后,通过组序号来替换,比如像bold.sub(r'\1', text)),这里是通过\1来替换的,这样的方式就是简单,快捷。但是不方便维护,不方便记忆,要想把这点改进一下,就得使用组名称的方式来替换,就跟前面学习组名称匹配一样,给一个组起一个名称,也像为什么给每一个人起一个名称一样,方便区分和记忆。因此使用这样的语法:\g
#python 3.6
#
import re
 
bold = re.compile(r'\*{2}(?P<bold_text>.*?)\*{2}')
 
text = 'Make this **cai**.  This **junsheng**.'
 
print('Text:', text)
print('Bold:', bold.sub(r'<b>\g<bold_text></b>', text))

结果输出如下:
Text: Make this **cai**.  This **junsheng**.
Bold: Make this <b>cai</b>.  This <b>junsheng</b>.

6.python里使用正则表达式来替换匹配成功的组并限定替换的次数

在前面学习过通过组名称来替换原来的字符串,这种替换只要出现相同的匹配成功,就会替换,而不管出现多少次。如果有一天,项目经理说要只需要替换第一个,或者前5个,怎么办呢?哈哈,这时你就得使用sub函数的count参数了,它可以指定替换的次数,轻松地解决了问题,例子如下:
#python 3.6
#
import re
 
bold = re.compile(r'\*{2}(?P<bold_text>.*?)\*{2}')
 
text = 'Make this **cai**.  This **junsheng**.'
 
print('Text:', text)
print('Bold:', bold.sub(r'<b>\g<bold_text></b>', text, count=1))


结果输出如下:
Text: Make this **cai**.  This **junsheng**.
Bold: Make this <b>cai</b>.  This **junsheng**.

7.python里使用正则表达式来替换匹配成功的组并输出替换的次数

在前面我们学习过怎么样限制替换的次数,如果我们想知道正则表达式里匹配成功之后,替换字符串的次数,那么需要怎么办呢?这是一个好问题,这时就需要采用另一个外函数subn()了。这个函数不但输出替换后的内容,还输出替换的次数,例子:
#python 3.6
#
import re
 
bold = re.compile(r'\*{2}(?P<bold_text>.*?)\*{2}')
 
text = 'Make this **cai**.  This **junsheng**.'
 
print('Text:', text)
print('Bold:', bold.subn(r'<b>\g<bold_text></b>', text))

结果输出如下:
Text: Make this **cai**.  This **junsheng**.
Bold: ('Make this <b>cai</b>.  This <b>junsheng</b>.', 2)

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6ad4bb123b4949bf8d86e1bf71b2cfd2.html