gpt4 book ai didi

Python正则表达式替换没有按我的预期工作

转载 作者:行者123 更新时间:2023-11-30 23:40:43 25 4
gpt4 key购买 nike

我正在尝试创建一个正则表达式来替换字符串的一部分。这是字符串的示例:

string = u'/nl/nl/1681/1/0/a/all/'
pattern = r'(/\w{2}/\w{2}/)(\d+)/(\d+)(/\d+/[ans]/all/)'
pattern_obj = re.compile(pattern)

该模式指定 4 个组。如果您进行搜索,结果如下:

m = pattern_obj.search(string)
m.group(0) -> u'/nl/nl/1681/1/0/a/all/'
m.group(1) -> u'/nl/nl/'
m.group(2) -> u'1681'
m.group(2) -> u'1'
m.group(4) -> u'/0/a/all/'

到目前为止一切顺利。现在我指定一个替换字符串,如下所示:

replacement = r'\1' + '1000' + '/' + '20' + r'\4'

并发出以下声明:

pattern_obj.sub(replacement,string)

结果是:

u'H00/20/0/a/all/'

我预料到了这个:

u'/nl/nl/1000/20/0/a/all/'

我一定做错了什么,但我不知道是什么。有人可以帮我吗?

最佳答案

完全组装后,您的替换字符串是 \11000/20\4\110被解释为 H 的八进制转义而不是对组号 1 的反向引用,后跟 10 .

您需要写\g<1>而不是\1以确保它是明确的反向引用。请参阅the documentation for re.sub .

关于Python正则表达式替换没有按我的预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12410743/

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