我有这样一个输入字符串:
'{ query: { and: [ { and: [ { _t: "Manifest" }, { or: [ { and: [ { _i: { gt: "53b2616fe4b028359ac3fea4" } } ] } ] }, { _s: "active" } ] }, { ENu_v: { elemMatch: { EOJ_v: { in: [ "*", "Production", "QA " ] } } } } ] }, orderby: { _i: 1 } } '
我想把它改成字典。在
^{pr2}$但这将引发一个例外,因为
query
应该是"query"
,
and
应该是{
所以我想把所有的字符串,比如string
改成"string"
,如何实现这一点呢?在
使用^{} :
请注意,您必须使用原始字符串文本(或转义
\1
作为\\1
)作为替换文本,否则将无法获得预期的输出。在我假设你的文本中没有“奇怪”的东西,比如:
{a: "some:string"}
;此解决方案不保留"some:string"
){a: "{b : \"hello\"}"}
)如果这些假设不成立,您就必须实际地解析文本,而且您不能单独使用regex安全地转换它。在
^{pr2}$ast
模块与codegen
第三方模块一起使用,可以很容易地操作这些数据。例如,您可以创建NodeTransformer
子类,例如:并将其用作:
但是,示例文本在语法上不是有效的文本,因为某些方括号不匹配(这可能是示例中的错误),有些字符串值缺少结束引号,并且不能在标识符中使用}。在
and
或{如果您可以修复格式以匹配python语法,那么上面的解决方案比使用regex的解决方案更健壮。但是,如果这是不可能的,您就必须为它编写自己的解析器,或者寻找能够做到这一点的第三方模块。在
您可以匹配以下内容:
并替换为:
^{pr2}$其中
\1
是第一个捕获的组。在你可以在这里看到它的作用:DEMO
相关问题 更多 >
编程相关推荐