忽略正则表达式替换中的中间组

时间:2017-11-01 21:45:51

标签: python regex

我需要替换多个值,正则表达式似乎是正确的工具。 我面临的问题是我需要离开匹配字符串的中间部分。

BasicUtil::EpgToInnerEpgString(sTmpAbc)
BasicUtil::EpgToInnerEpgOID(sTmpXyz)
BasicUtil::EpgToInnerEpgBool(sTmpAbc)
BasicUtil::EpgToInnerEpgInt(sTmpAsd)
BasicUtil::EpgToInnerEpgLong(sTmpAxx)
BasicUtil::EpgToInnerEpgShort(sTmpAny)

我选择匹配整个字符串,我想知道是否有办法忽略中间匹配

R2 = re.compile("(BasicUtil::(\w+)\()(\w+)(\))", re.MULTILINE)
R2.subn('', slongString)

这是预期的结果

sTmpAbc sTmpXyz sTmpAbc sTmpAsd sTmpAxx sTmpAny

知道如何继续吗?

感谢PJProudhon这里是实际代码:

 R1 = re.compile("(BasicUtil::(\w+)\()(\w+)(\))", re.MULTILINE)
    print(R1.sub('\\3', s))

OR

R2 = re.compile("BasicUtil::\w+\((\w+)\)", re.MULTILINE)
print(R2.sub('\\1', s))

1 个答案:

答案 0 :(得分:1)

每次出现都匹配并将参数存储在组1中,如下所示:

BasicUtil::\w+\((\w+)\)

由捕获的组替换匹配:$1

Demo