Python正则替换问题:将{keyword:日文}格式替换为'keyword'
解决Python正则替换
{keyword: xxx}子串的问题 首先,你的问题核心是无法匹配到{keyword: 内容}格式的子串,导致替换操作完全没生效。这是因为你写的正则只限定了特定范围的字符,而输入里的内容(比如中文、乱码字符)不在这个范围内,正则根本没识别到目标内容。
正确的解决方案
我们只需要匹配{keyword:开头,然后匹配任意非}的字符直到闭合的},就能覆盖所有这类子串。用这个正则表达式就够了:r"\{keyword:[^}]+\}"
下面是完整的测试代码,包含你给出的所有测试场景:
import re # 测试你的原始输入字符串 s = '{keyword: 閮ㄥ眿}銇勩亜銇� {keyword: 鍏湌}銇逗楹椼仹銇� 绉併伅{keyword: 閮ㄥ眿鎹滄熁}銇с仚銆�' # 执行替换操作 t = re.sub(r"\{keyword:[^}]+\}", 'keyword', s) print(t)
运行后输出会是:
keyword銇勩亜銇� keyword銇逗楹椼仹銇� 绉併伅keyword銇с仚銆�
为什么原来的正则不生效?
你之前写的r"\{keyword:[銇�銈撱偄-銉充竴-]+\}"存在两个关键问题:
- 字符范围
[銇�銈撱偄-銉充竴-]只包含了一小部分特定的乱码字符,无法覆盖输入里的中文、其他符号等内容; - 这个范围的写法有语法问题,
-在字符集里如果不是用来表示连续范围(比如a-z),需要转义或者放在开头/结尾,否则会被解析成无效范围,导致正则匹配逻辑出错。
而[^}]是一种否定字符集,表示匹配除了}之外的任意字符——不管是中文、乱码、空格还是其他符号,都能被正确匹配到,完美解决你的需求。
内容的提问来源于stack exchange,提问作者tktktk0711
相关产品推荐
相关产品推荐

