美文网首页
用正则表达式替换所有匹配match

用正则表达式替换所有匹配match

作者: Kaidi_G | 来源:发表于2020-01-30 23:38 被阅读0次

需求:

TestCase有时需要分批测试,请在@artt({....})内为文件内所有缺失应有tag的test case添加指定的测试tag.

例:
@artt({'P0': True, 'P1': True, 'reqId': ["12345"]})
添加 tag P2 -->
@artt({'P0': True, 'P1': True, 'P2': True, 'reqId': ["12345"]})


with open("testpy.py") as f:
        code_content = f.read()

pattern = re.compile(r"(@artt\({(?!.*P2.*).*?)'reqId'")
new = re.sub(pattern,r"\1 'P2': True, 'reqId'",code_content)

print(new)

要点

.sub(pattern, replace, string)中的replace会替换掉整个match而不是哪一个capture group,
如果你想要保留match的其它部分只替换掉你想要的capture group,你非得将其他需要保留的部分也单独作为capture group用括号括起来,并在replace部分用/1 /2 /3....的格式指代,在这种情况下,replace部分也要在引号前加r标用来跳过/符号。

如本例中,我先匹配所有@artt({开头reqId结尾的内部不含P2的行,把'reqId'前面的所有部分保留,把'reqId' 替换为'P2': True, 'reqId'
注意,replace部分的写法要为r"\1 'P2': True, 'reqId'"

参考

最后,如果希望在正则表达式内使用变量,可以用string类型的.format()方法将括号内的变量传入花括号{}的位置。

def add_Tag_To_File(path,tag):
    with open("testpy.py") as f:
        code_content = f.read()
    pattern = re.compile(r"(@artt\({(?!.*'P2'.*).*?)'reqId'")
    replace = r"\1 '{}': True, 'reqId'"
    new_code_content = re.sub(pattern,replace.format(tag),code_content)
    return new_code_content

相关文章

  • 用正则表达式替换所有匹配match

    需求: TestCase有时需要分批测试,请在@artt({....})内为文件内所有缺失应有tag的test c...

  • Python基础(15)——正则表达式

    re.match() re.match(正则表达式,要匹配的字符串),匹配出以字符串的起始位置开始匹配正则表达式,...

  • 正则表达式五---re的所有函数方法

    re.match re.match是用来进行正则匹配检查的方法,若字符串匹配正则表达式,则match方法返回匹配对...

  • 正则

    导入re模块import re使用match方法进行匹配操作result = re.match(正则表达式,要匹配...

  • Python 正则表达式

    正则表达式 最简单的正则表达式 search() / match() 的区别 match() 要求从文本开头就匹配...

  • php 替换 字符串中的 多个 不同字符

    有两个函数可以替换字符串思路是用preg_match()函数先匹配所有字符串 遍历数组 strpos()计算位置 ...

  • PHP表单验证-正则表达式

    核心:preg_match (进行正则表达式匹配) 验证名称:name if(!preg_match("/^[a-...

  • 正则表达式

    re模块的快速使用 re.match是用来进行正则匹配检查的方法,若字符串匹配正则表达式,则match方法返回匹配...

  • Unity 一键替换字体工具

    打开预制体或者场景文件,可以看到。 用正则表达式来匹配替换即可。

  • 正则

    导入re模块 import re 使用match方法进行匹配操作result = re.match(正则表达式,要...

网友评论

      本文标题:用正则表达式替换所有匹配match

      本文链接:https://www.haomeiwen.com/subject/zwvwthtx.html