Python正则表达式之sub和subn函数的使用

By | February 25, 2018

今天学习 Python 正则表达式 re 模块的函数 sub 和subn 的使用。

#!/usr/bin/python
#-*- coding:utf-8 -*-

import re

# sub()和subn() 函数 
'''
这两个函数以某种形式替换正则匹配到的部分
其中,前者返回匹配后的字符串,
不同于前者,后者还会返回一个表示替换次数的数字,
匹配后的字符串与数字组成一个元组。
'''
print re.sub('X', 'Mr. Smith', 'attn: X\n\nDear X,\n')
'''
上面一行代码的执行结果:
attn: Mr. Smith
Dear Mr. Smith,
'''

print re.subn('X', 'Mr. Smith', 'attn: X\n\nDear X,\n')
'''
执行结果:
('attn: Mr. Smith\n\nDear Mr. Smith,\n', 2)
'''

print re.sub('[ae]', 'X', 'abcdef') # XbcdXf
print re.subn('[ae]', 'X', 'abcdef') # ('XbcdXf', 2)

# 美国的日期格式(MM/DD/YY)转换为其他国家的常用格式(DD/MM/YY{YY})
## \N 替换为子组
print re.sub(r'(\d{1,2})/(\d{1,2})/(\d{2}|\d{4})',
        r'\2/\1/\3', '2/20/91') # 20/2/91
print re.subn(r'(\d{1,2})/(\d{1,2})/(\d{2}|\d{4})',
        r'\2/\1/\3', '2/20/1991') # ('20/2/1991', 1)

# 如果sub函数的第二个参数是函数
def return_str(match):
    return '{}/{}/{}'.format(match.group(2), match.group(1), match.group(3))

print re.sub(r'(\d{1,2})/(\d{1,2})/(\d{2}|\d{4})', return_str, '2/20/1991') # 20/2/1991

Created On: 2018-02-25

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,也欢迎指正,一起学习,共同进步。如果本文对您有帮助,而且让您觉得值得为内容付费,那么就请赞助(打赏)一下本人,这不强制。打赏支持微信支付,方法是使劲地戳一下下方的“打赏”按钮,然后得到微信收款的二维码,再用微信支付扫一下,就像买菜那样。祝好!