如何用正则表达式去除大括号内的最后一个逗号?
解决方案
要去除大括号内紧邻}的最后一个逗号,可以用下面的正则替换实现:
import re cypher_query = "match n:chocolate{chocolate:$chocolate, icecream:'snowcone', donut:$donut, chocolate:$chocolate,}) return n" new_query = re.sub(r'(\{[^}]+),(\s*\})', r'\1\2', cypher_query) print(new_query)
运行后会输出目标结果:
match n:chocolate{chocolate:$chocolate, icecream:'snowcone', donut:$donut, chocolate:$chocolate}) return n
正则逻辑说明
(\{[^}]+):捕获组1,匹配{开头,加上大括号内所有非}的字符(覆盖到最后一个逗号之前的全部内容),(\s*\}):匹配需要删除的目标逗号,以及后面可能存在的空白字符和},将}及空白放入捕获组2- 替换为
\1\2:拼接两个捕获组的内容,相当于直接去掉了中间的多余逗号
原正则的问题
你写的\{\,$\}完全不匹配目标场景:
- 这个正则要求字符串以
{,开头、以}结尾,而你的目标字符串结构完全不符合这个规则,因此根本匹配不到任何内容,自然无法完成替换
内容的提问来源于stack exchange,提问作者StackSpin
相关产品推荐
相关产品推荐

