7.12 用 sub()方法替换字符串

本文介绍了正则表达式中的sub方法,用于查找并替换文本模式。通过sub方法,可以将发现的匹配项替换为指定字符串,例如将'Agent Alice'替换为'CENSORED'。同时,sub方法允许使用匹配的文本本身作为替换的一部分,例如保留密探名字的第一个字母,其余部分替换为星号。文中给出了具体的代码示例来演示这个过程。
摘要由CSDN通过智能技术生成


正则表达式不仅能找到文本模式,而且能够用新的文本替换掉这些模式。Regex
对象的 sub()方法需要传入两个参数。第一个参数是一个字符串,用于取代发现的匹配。第二个参数是一个字符串,即正则表达式。sub()方法返回替换完成后的字符串。
例如,在交互式环境中输入以下代码:
>>>  namesRegex  =  re.compile(r'Agent  \w+')
>>>  namesRegex.sub('CENSORED',  'Agent  Alice  gave  the  secret  documents  to  Agent  Bob.')
'CENSORED  gave  the  secret  documents  to  CENSORED.'
有时候,你可能需要使用匹配的文本本身,作为替换的一部分。在 sub()的第一个参数中,可以输入\1、\2、\3……。表示“在替换中输入分组 1、2、3……的文本”。
例如,假定想要隐去密探的姓名,只显示他们姓名的第一个字母。要做到这一点,可以使用正则表达式Agent (\w)\w*,传入 r'\1****'作为 sub()的第一个参数。字符串中的\1 将由分组 
1 匹配的文本所替代,也就是正则表达式的(\w)分组。
>>>  agentNamesRegex  =  re.compile(r'Agent  (\w)\w*')
>>>  agentNamesRegex.sub(r'\1****',  'Agent  Alice  told  Agent  Carol  that  Agent Eve  knew  
Agent  Bob  was  a  double  agent.')
A****  told  C****  that  E****  knew  B****  was  a  double  agent.'
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大飞哥软件自习室

希望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值