我目前正在为我的程序开发一个解析器。解析器解析类似于JSON的代码,但我想远离使用JSON解析器。我必须使用自己的解析器而不是第三方解析器。它使用大括号来包含"设置"。
这是我目前的正则表达式代码。
\\{(\\s*)+(.*?)(\\s*)+\\}
示例输入和输出将是:
输入:{value, value2}
输出:value, value2
现在,这可以正常工作,但是当我想在输入中放入另一个集合时:
输入:{value, {value2}}
输出:value, {value2 }<-Outermost curly bracket
最外面的花括号被留下,因为嵌入式集合中的右大括号成为模式的一部分。
我还希望能够在输入中添加其他集合:
输入:{value, value2} {value3, value4}
(通缉)输出:value, value2 value3, value4
这使得在正则表达式末尾使用$
几乎无用。
答案 0 :(得分:0)
我发现这根本不可能。我所做的是使用正则表达式找到集合的起点。
输入类似于:
“@set1{ value1, value2, @set2{ value3, value4}, @set3{ value5, value6}, value7} @set4{ value8, value9 }
”
这就等同于这个大纲:
我接下来做的是迭代字符串中的每个字符并计算开括号的数量。然后我确保关闭括号的数量等于一set
。
我使用递归方法来获取嵌套集。