regex - Python正则表达式忽略引号之间的内容
问题描述
我有一个字符串,其中一部分用引号括起来。就像下面代码片段第三行的那个。我希望将字符串格式化为 dict 文字。意思是在缺少引号的地方,应该添加它们。但是引号内的部分必须忽略。我想出了下面的代码来处理这个:
from ast import literal_eval
from re import sub
str = "key1:[val1,val2,val3],key2:'val4A,val4B'"
str = sub(r"([\w\-\.]+|[\"'].*[\"'])", r"'\1'", f"{{{str}}}")
str = sub(r"[\"']{2,}(.*)[\"']{2,}", r"'\1'", str)
fin = literal_eval(str)
print(fin)
这段代码可以完成工作,但我想知道是否有一种方法可以通过一次性使用 sub 来实现这一点。在您将此标记为重复之前,我尝试了网络上提供的大量解决方案,包括正负前瞻和后视、排除和简单的否定匹配。找不到任何可行的方法。如果有我错过的解决方案或任何人有解决方案,我将非常感谢您了解它。
解决方案
试试这个([\w\-\.]+(?=(?:[^']*'[^']*')*[^']*$))
:
推荐阅读
- java - 16 位 char 值的第 6 位在哪里?
- swagger - Nestjs/swagger:如何记录 JWT 有效负载?
- python-3.x - 如何完成这个 Python 脚本来操作制表符分隔文件中的数据?
- html - 在一个视图中显示多个模型数据
- c++ - 函数,创建其他函数 c++
- node.js - 什么时候应该使用 JavaScript 中的回调函数
- unity3d - 如何使用 3x3 旋转矩阵和平移向量应用变换?
- php - PHP机器学习
- php - PHP 警告:PHP 启动:无法加载动态库 'sqlsrv.so'
- javascript - 输入类型范围 - oninput 更改标签 - 使用 javascript "if" 更改特定值