gpt4 book ai didi

python正则表达式替换匹配字符串的一部分

转载 作者:太空狗 更新时间:2023-10-29 20:14:51 25 4
gpt4 key购买 nike

我得到了一个可能看起来像这样的字符串

"myFunc('element','node','elementVersion','ext',12,0,0)"

我目前正在使用检查有效性,效果很好

myFunc\((.+?)\,(.+?)\,(.+?)\,(.+?)\,(.+?)\,(.+?)\,(.+?)\)

现在我想替换第三个参数中的任何字符串。不幸的是,我不能只在第 3 个位置的任何子字符串上使用字符串替换,因为相同的“子字符串”可能位于该字符串中的其他任何位置。

有了这个和一个 re.findall,

myFunc\(.+?\,.+?\,(.+?)\,.+?\,.+?\,.+?\,.+?\)

我能够在第 3 个位置获取子字符串的内容,但 re.sub 不会替换字符串它只是返回我想要替换的字符串:/

这是我的代码

myRe = re.compile(r"myFunc\(.+?\,.+?\,(.+?)\,.+?\,.+?\,.+?\,.+?\)")
val = "myFunc('element','node','elementVersion','ext',12,0,0)"

print myRe.findall(val)
print myRe.sub("noVersion",val)

知道我错过了什么吗?

谢谢!塞布

最佳答案

在 re.sub 中,您需要为整个匹配字符串指定一个替换。这意味着您需要重复您不想更换的部件。这有效:

myRe = re.compile(r"(myFunc\(.+?\,.+?\,)(.+?)(\,.+?\,.+?\,.+?\,.+?\))")
print myRe.sub(r'\1"noversion"\3', val)

关于python正则表达式替换匹配字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4489074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com