我尝试将字符串转换为"(foo)"
到数组:[foo]
其中foo
是嵌套结构。
例如,我们有一个字符串:
"( ('hello' ('world')) (bar) )"
,这应该转换为
[['hello', ['world']], [MasterObj['bar']]]
要开始使用,请简化问题,
"( (foo) (bar) )"
- f - > ["(foo)", "(bar)"]
如果我可以获得一个函数来完成这项工作,那么嵌套对象可以递归完成。
使用非常原始的正则表达式,我可以写:
var src = "( (foo) (bar) );"
var src1 = src.match(/\(.*\)/g);
src1 = ['( (foo)(bar) )']
至少检测到匹配的括号。
var src = "(foo) (bar)";
var src1 =src.match(/\(.*\)/g);
src1 = ['( foo)(bar )'] 括号是无与伦比的。
所以,这是我的问题:
你如何匹配最外面的匹配括号内的内容?
是否有共同模式或正则表达式?
谢谢你的想法。
答案 0 :(得分:2)
在这里读过一些人写了stuck
后,我发现了一种非常简单的方法来匹配括号。
对于此解决方案,使用正则表达式相当复杂。
假设我们有一个复杂的嵌套列表
(a ((b) (c(d)) e))
我们在字符串上有一个光标,
从第一个(
count = 0
开始,然后将光标移到最后。
每次光标遇到(
时,都会增加计数。
每次光标遇到)
时,都会减少计数。
匹配count === 0
时的)
。
在此示例中,在光标从头部移动到结束时,计数进入 - >
0 1 2 3 2 3 4 3 2 1 0 <匹配!
答案 1 :(得分:0)
我并不完全理解你要完成的任务,但我认为你正在试图用正则表达式来处理嵌套模式。我那样的话,你不能这样做。正则表达式不是正确的工具。