分享

re.sub 使用方法

 yliu277 2019-10-05

re.sub功能是对于一个输入的字符串,利用正则表达式,来实现字符串替换处理的功能返回处理后的字符串

re.sub共有五个参数

三个必选参数 pattern,repl,string

两个可选参数count,flags

  • pattern,表示正则中的模式字符串

    • 反斜杠加数字(\n)表示对应匹配的组也就是用之前匹配到的字符串补充到这个位置,例如

    • 将“hello python,ni hao c,zai jian python”替换为PHP,代码如下替换成功

    • 代码中的\1表示第一次匹配到的字符串也就是“python”,这样可以匹配原来的字符串,从而整个字符串替换为PHP

    • 若改为下面这样(红色部分为不同的地方)

    • 代码中的\2表示第二次匹配到的字符串也就是“c”,显然不能和原来的字符串匹配,所以不会替换
      这里是为了说明区别\n代表的是第n次所匹配到字符串,而不是第n次用到的匹配模式

    1. import re
    2. inputStr='hello python,ni hao c,zai jian python'
    3. replaceStr=re.sub(r'hello (\w ),ni hao (\w ),zai jian \2','PHP',inputStr)
    4. print replaceStr
    1. import re
    2. inputStr='hello python,ni hao c,zai jian python'
    3. replaceStr=re.sub(r'hello (\w ),ni hao (\w ),zai jian \1','PHP',inputStr)
    4. print replaceStr

  • repl,表示要被替换的,可以是字符串也可以是函数,

    • 如果是字符串,则所有的反斜杠转义字符都会被处理

    • \n:被处理为对应的换行符

    • \r :被处理为回车符

    • 不能被识别的转义字符,则只是被识别为普通的字符,例如:\j被处理为j这个字母本身

    • 反斜杠加g以及中括号内一个名字,即\g<name>对应命名了的组

    • 例如:

    • 运行结束输出c,这里的g<2>表示用第二个匹配到的字符串进行替换,也就是标红部分

    • 也可以用命名分组的方式

    • 输出结果为c,将每个匹配的字符串进行了命名,word2匹配到的是c

    • 如果是函数,则可以这样使用

    • 主要代码解释,匹配字符串中的数字,将其命名为组number,一共匹配到两个123和456
      将匹配到的东西执行_add111函数,判断是不是组名为number,然后执行。

    1. import re
    2. def pythonSubDemo():
    3. inputStr='hello 123 world 456';
    4. def _add111(matched):
    5. intStr=matched.group('number')
    6. intValue=int(intStr)
    7. addValue=intValue 111
    8. addValueStr=str(addValue)
    9. return addValueStr
    10. replacedStr=re.sub('(?P<number>\d )',_add111,inputStr)
    11. print replacedStr
    12. if __name__=='__main__':
    13. pythonSubDemo()
    1. import re
    2. inputStr='hello python,ni hao c,zai jian python'
    3. replaceStr=re.sub(r'hello (?P<word1>\w ),ni hao (?P<word2>\w ),zai jian \1','\g<word2>',inputStr)
    4. print replaceStr
    1. import re
    2. inputStr='hello python,ni hao c,zai jian python'
    3. replaceStr=re.sub(r'hello (\w ),ni hao (\w ),zai jian \1','\g<2>',inputStr)
    4. print replaceStr

  • string,要处理的字符串


  • count,限定替换的个数,默认为替换所有


  • flags,匹配模式,可以使用按位或‘|‘表示同时生效,也可以在正则表达式中指定。

    • re.I忽略大小写

    • re.L表示特殊字符集\w,\W,\b,\B,\s,\S

    • re.M表示多行模式

    • re.S ‘.’包括换行符在内的任意字符

    • re.U表示特殊字符集\w,\W,\b,\B,\d,\D,\s,\D

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多