我有以下正则表达式:
pattern = '^[a-zA-Z0-9-_]*_(?P<pos>[A-Z]\d\d)_T\d{4}(?P<fID>F\d{3})L\d{2}A\d{2}(?P<zID>Z\d{2})(?P<cID>C\d{2})\.tif$'
与以下文件名匹配:
^{pr2}$分组:
m = re.match(pattern, filename)
print m.group("pos") # Z01
print m.group("fID") # F015
print m.group("zID") # Z01
在Python中,如何仅用给定的字符串替换指定的组?
我试图将re.sub
与函数调用一起使用,但不知道该函数应该是什么样子:
def replace_function(matchobj):
# how to replace only a given match group?
# (the following replaces *all* occurrences of "Z01" in this example)
return matchobj.group(0).replace(matchobj.group("slice"), "---")
print re.sub(pattern, replace_function, filename)
我想要的结果是:
151006_655866_Z01_T0001F015L01A02---C03.tif
要获得所需的输出,只需捕获要
保存。在它之间插入
-
。在查找
^([a-zA-Z0-9_-]*_[A-Z]\d\d_T\d{4}F\d{3}L\d{2}A\d{2})Z\d{2}(C\d{2}\.tif)$
替换:
$1 -$2
您可以使用闭包和所选匹配组的开始/结束索引执行所需操作:
输出:
^{pr2}$在线实现可用here
相关问题 更多 >
编程相关推荐