我目前正在为我的程序开发解析器。解析器解析类似于JSON的代码,但我想远离使用JSON解析器。我必须使用自己的解析器而不是第三方解析器。它使用大括号来包围“集合”。正则表达式在大括号之间获取文本
这是我目前正在使用的正则表达式代码。
\\{(\\s*)+(.*?)(\\s*)+\\}
一个例子输入和输出是:
输入:{value, value2}
输出:value, value2
现在,这个工作正常,但当我想提出的另一组输入:
输入:{value, {value2}}
输出:value, {value2 }<-Outermost curly bracket
最外花括号被留下,因为从嵌入组右大托架成为图案的一部分。
我也希望能够把其他组输入:
输入:{value, value2} {value3, value4}
(通缉)输出:value, value2 value3, value4
这使得在正则表达式的结尾使用$
实际无用。
这个'{(\ s *)+(。*?)(\ s *)+}'是一个不好的方法。如果dot-all标志被设置,那么'\ s'是多余的。如果dot-all标志设置为_NOT_,那么这个'。*?'将只允许1行,然后它需要可选的空格,然后是'}'。除非你只想匹配1行,否则这种做法会失败。 – sln
Java中的正则表达式不支持递归,因此您不能使用它来解析嵌套结构。 – Pshemo
使用本地Java语言递归函数调用,维护自己的大括号计数。 Java中的正则表达式是不可能的。请求升级。 – sln