擅长:python、mysql、java
<p>您没有精确地指定语言,但看起来允许任意嵌套方括号。它不是一种普通语言。我不建议用正则表达式来解析它(这可能是因为python中的正则表达式不是真正的正则表达式,但是即使有可能,也可能是一团糟)。在</p>
<p>我建议为您的语言定义一个上下文无关的语法,然后解析它。你可以这样做:</p>
<pre><code>EXPR -> A EXPR (an expression is an expression preceded by an alphabetic character)
EXPR -> (LIST) EXPR (an expression is a list followed by an expression)
EXPR -> "" (an expression can be an empty string)
LIST -> EXPR | LIST (a list is an expression followed by "|" followed by a list)
LIST -> EXPR (or just one expression)
</code></pre>
<p>这种语法可以由一个简单的自顶向下的递归解析器来解析,它在线性时间内工作。下面是一个示例实现:</p>
^{pr2}$
<p>{如果你不熟悉这个技巧的话。在</p>
<p>这个实现不是最有效的实现(例如,它显式地使用列表而不是迭代器),但它是一个很好的起点。在</p>