zoukankan      html  css  js  c++  java
  • re.sub用法

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

    re.sub共有五个参数

    三个必选参数pattern,repl,string

    两个可选参数count,flags

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

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

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

    import re
    inputstr="hello python,ni hao c,zai jian python"
    replacestr=re.sub(r"hello(w+),ni hao(w+),zai jian 1","php",inputstr)
    print(replacestr)

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

    若改为下面这样

    import re
    inputstr="hello python,ni hao c,zai jian python"
    replacestr=re.sub(r"hello (w+),ni hao (w+),zai jian 2","php",inputstr)
    print(replacestr)

    代码中的2表示第二次匹配到的字符串也就是“c”,显然不能和原来的字符串匹配,所以不会替换

    这里是为了说明区别 代表的是第n次所匹配到字符串,而不是第n次用到的匹配模式

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

    • 如果是字符串,则所有的反斜杠转义字符都会被处理
    • :被处理为对应的换行符
    • :被处理为回车符
    • 不能被识别的转义字符,则只是被识别为普通的字符,例如:j被处理为j这个字母本身
    • 反斜杠加g以及中括号内一个名字,即g<name>对应命名了的组
    import re
    inputStr="hello python,ni hao c,zai jian python"
    replaceStr=re.sub(r"hello (w+),ni hao (w+),zai jian 1","g<2>",inputStr)
    print replaceStr
    • 运行结束输出c,这里的g<2>表示用第二个匹配到的字符串进行替换,也就是标红部分
    • 也可以用命名分组的方式
    import re
    inputStr="hello python,ni hao c,zai jian python"
    replaceStr=re.sub(r"hello (?P<word1>w+),ni hao (?P<word2>w+),zai jian 1","g<word2>",inputStr)
    print replaceStr
    • 输出结果为c,将每个匹配的字符串进行了命名,word2匹配到的是c
    • 如果是函数,则可以这样使用
    import re
    def pythonSubDemo():
        inputStr="hello 123 world 456";
        def _add111(matched):
            intStr=matched.group("number")
            intValue=int(intStr)
            addValue=intValue+111
            addValueStr=str(addValue)
            return addValueStr
        replacedStr=re.sub("(?P<number>d+)",_add111,inputStr)
        print replacedStr
    if __name__=="__main__":
        pythonSubDemo()

    主要代码解释,匹配字符串中的数字,将其命名为组number,一共匹配到两个123和456

    将匹配到的东西执行_add111函数,判断是不是组名为number,然后执行

    • string,要处理的字符串
     
    • count,限定替换的个数,默认为替换所有
     
    • flags,匹配模式,可以使用按位或‘|‘表示同时生效,也可以在正则表达式中指定。
      • re.I忽略大小写
      • re.L表示特殊字符集w,W,,B,s,S
      • re.M表示多行模式
      • re.S ‘.’包括换行符在内的任意字符
      • re.U表示特殊字符集w,W,,B,d,D,s,D
  • 相关阅读:
    Spring5.0的第一次尝鲜
    java客户端Jedis操作Redis Sentinel 连接池
    【转载】Redis Sentinel服务配置
    Dubbo的配置及启动
    【转载】Zookeeper 安装和配置
    【转载】redis.conf文件详解
    【转载】Redis优化经验
    【转载】Redis sort 排序命令详解
    redis的maxmemory设置以及淘汰策略介绍
    【转载】redis优化配置和redis.conf说明
  • 原文地址:https://www.cnblogs.com/z-x-y/p/9633212.html
Copyright © 2011-2022 走看看