忽略正则表达式子集中的中间组

2024-06-16 13:27:42 发布

您现在位置: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))

或者

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

Tags: 工具字符串reregexmultiliner2printcompile
1条回答
网友
1楼 · 发布于 2024-06-16 13:27:42

为每一次出现创建一个匹配项,并将参数存储在组1中,如下所示:

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

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

Demo

相关问题 更多 >