gpt4 book ai didi

python - 用正则表达式模式替换

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

我有一个类似 longstring-abc{something goes here} 的字符串, 我想在 abc 之后替换大括号内的部分与 replacement . (所以它应该是 longstring-abc{replacement} 。我正在尝试使用 re.sub 函数:

re.sub(r'abc\{(.*)\}', r'replacement', r'mylongstring-abc\{def\}')

所以我正在尝试寻找模式 abc\{(.*)\}并替换里面的东西 (...)replacement .但这只会返回原始字符串。我怎样才能使它正确?

最佳答案

首先,一个小问题:你不需要在 RE 中转义大括号;他们代表自己。此外,如果您在字符串本身中对它们进行转义,您将在字符串中插入 实际 反斜杠,并且您的 RE 也必须匹配它们。

其次,对于您的问题:只匹配足够的字符串以确保您不会错误地匹配。整个东西都将被替换,所以如果您只想替换大括号内的内容,请使用一个组来捕获并重用您没有更改的部分:

re.sub(r'(abc){.*}', r'\1{replacement}', 'mylongstring-abc{def}')

或者,如果“abc”部分是固定的,您可以简单地按字面意思包含它:

re.sub(r'abc{.*}', r'abc{replacement}', 'mylongstring-abc{def}')

请注意,您不需要围绕 .* 分组,除非您在替换字符串中使用它。

顺便说一句,如果同一行上有另一个右括号,您的模式将匹配太多。要在第一个 右大括号处停止,请使用r"(abc){[^}]*}"r"(abc){.*?} “。后者是一个“非贪婪”星:它匹配的越少越好。

关于python - 用正则表达式模式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16802282/

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