gpt4 book ai didi

regex - 如何匹配但排除递归模式中的定界符

转载 作者:行者123 更新时间:2023-12-04 15:18:06 32 4
gpt4 key购买 nike

假设一个字符串{a:b,c:d},{a:b,c:d,e:[{d:e},{f:g}]}。我想将其解析为标记a:b,c:d a:b,c:d,e:[{d:e},{f:g}] 稍后可以进一步解析.

正则表达式 ({(?:[^{}]++|(?1))*}) 生成 {a:b,c:d} {a:b,c:d,e:[{d:e},{f:g}]},但我一直在想办法匹配封闭的 {} 而不用将它们包括在结果中。 (该字符串可能包含示例中未显示的更深层次的递归元素)

最佳答案

您需要捕获您需要从匹配中提取的正则表达式部分:

{((?:[^{}]++|(?R))*)}
^_________________^

这些括号创建了第 1 组,它将包含您可以使用您的编程语言访问的值。

获得匹配后,您可以运行第二遍以提取 a:ba:[...] 子字符串,使用

[^,[]+(?:\[[^][]+])?

参见 regex demo .详情:

  • [^,[]+ - 除了 [ 和逗号
  • 之外的零个或多个字符
  • (?:\[[^][]+])? - [ 的可选序列,然后是 [< 以外的一个或多个字符] 然后是 ]

关于regex - 如何匹配但排除递归模式中的定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63957134/

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