输入是一个表示元素列表的字符串。
列表定义为一个开放的大括号
元素可以是文字或元素列表。
文字是一系列非空格字符。如果一个元素包含大括号,则必须使用反斜杠进行转义:
示例:
列表定义为一个开放的大括号
{
,后跟 0 或多个由空格分隔的元素,后跟一个关闭的大括号 }
。元素可以是文字或元素列表。
文字是一系列非空格字符。如果一个元素包含大括号,则必须使用反斜杠进行转义:
\{
和 \}
。(或者为简单起见,您可以假设文字中不允许使用大括号)示例:
"{abc { def ghi } 7 { 1 {2} {3 4} } {5 6} x\{yz \}foo }"
字面量中不要使用花括号:
"{abc { def ghi } 7 { 1 {2} {3 4} } {5 6} xyz foo }"
这是一个Tcl列表的简化定义。
我想知道的是:输入内容是否可以使用正则表达式拆分为最外层循环的元素?
期望输出:
abc
{ def ghi }
7
{ 1 {2} {3 4} }
{5 6}
x{yz
}foo
真正的问题是:这能用正则表达式实现吗?
我最感兴趣的是.NET版本,但会接受任何答案。
我将在回答中发布自己的假设,并查看它是否被验证或销毁。
}foo
是一个字面量,但4}
不是呢?实际上,根据你的定义,}
是一个有效的字面量。 - Kobiset a 3{4
,但不允许set a {1 2 3{4 }
。封闭花括号也有类似的行为。我会更新问题。 - Cristian Diaconescu