>> test = re.sub(r'\]*\>'-6ren">
gpt4 book ai didi

python - 在正则表达式匹配后获取部分数据以替换原始字符串

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:34 26 4
gpt4 key购买 nike

我正在尝试使用 re.sub 替换字符串的一部分。使用静态替换字符串,我可以:

>>> data = "{'user': <User: some name>, 'user': <User: n0n@m3>}"
>>> test = re.sub(r'\<[^>]*\>', "'something'", data)
>>> test
"{'user': 'something', 'user': 'something'}"

但是,我希望得到最终结果

>>> test
"{'user': 'some name', 'user': 'n0n@m3'}"

其中替换字符串是原始替换字符串的一部分。我怎样才能做同样的事情?

最佳答案

您需要使用 capturing group .

>>> data = "{'user': <User: some name>, 'user': <User: n0n@m3>}"
>>> re.sub(r'<[^:>]*:\s*([^>]*)>', r"'\1'", data)
"{'user': 'some name', 'user': 'n0n@m3'}"

解释:

  • <匹配文字 <象征。由于它不是正则表达式元字符,因此您无需转义它即可匹配文字 <符号。

  • [^:>]*匹配任何字符,但不匹配冒号或 > , 零次或多次。

  • :\s*匹配冒号和后面的零个或多个空格。

  • ([^>]*)现在这会捕获所有剩余的字符直到 >符号。

  • 通过替换所有匹配的字符,即整个<..>在组索引 1 内包含 thw 个字符并用单引号括起来的 block 将为您提供所需的输出。

关于python - 在正则表达式匹配后获取部分数据以替换原始字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29471992/

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