【发布时间】:2019-09-06 00:48:30
【问题描述】:
我有这个字符串
{ prop1: 'val1', prop2:{ prop3: 'val3' , messages: {something:'val'} messages: { something:'val2', x : {x : 1, y : 5} } } , prop4: 'val4' }
如何使用 xregexp(或其他解决方案)在 javascript 中找到 messages: { ... } 的所有实例
这个/messages: (\{(?>[^{}]+|(?1))*\})/g 在 php 中工作,但不在 javascript 中
使用xregexprecursion http://xregexp.com/api/#matchRecursive也想不通
试过https://repl.it/@RezaRahmati/xregexp
XRegExp.matchRecursive(str, 'messages: {', '}', 'gi')
但得到Unbalanced delimiter found in string 错误
更新
作为@vs97 和@barmar 的评论,我尝试了messages: (\{.+\}) 并在多行上工作,当它是单行时仍然存在问题
【问题讨论】:
-
就这么简单? 消息:(\{.+\}) regex101.com/r/Fs4SAq/1
-
消息是在 regex101.com 中的不同行,还是像问题中的单行?
-
Javascript doesn't natively support recursive regex 但您也许可以使用library that does。否则,我会说您应该制作/使用简单的解析器,因为这种类似 JSON 的结构看起来不像常规语言。特别是如果您的格式不依赖空格来分隔行并且只有
{}很重要。 -
@Khauri 这个问题说他试图使用那个库。
-
我无法阅读。但在那种情况下,我认为很高兴看到 OP 尝试过的代码。
标签: javascript regex xregexp