Regex 使用tcl/tk将字符串分隔为不同的列表

Regex 使用tcl/tk将字符串分隔为不同的列表,regex,list,split,tcl,tk,Regex,List,Split,Tcl,Tk,是否可以将字符串中的项目转换为每个项目的单独列表?设置一个[list 1.2 1.3 1.6 1.7 1.8]并具有类似{1.2}{1.3}{1.6}{1.7}{1.8}的输出,我们可以使用正则表达式解析字符串,并通过连接生成结果: set a "1.2 1.3 1.6 1.7 1.8" set b [regexp -all -inline {\S+} $a] set c "{[join $b "}{"]}" 现在,如果我们知道我们有一个合适的列表,我们可以跳过正则表达式的内容,但最安全的做

是否可以将字符串中的项目转换为每个项目的单独列表?设置一个[list 1.2 1.3 1.6 1.7 1.8]并具有类似{1.2}{1.3}{1.6}{1.7}{1.8}

的输出,我们可以使用正则表达式解析字符串,并通过连接生成结果:

set a "1.2 1.3 1.6 1.7 1.8"

set b [regexp -all -inline {\S+} $a]
set c "{[join $b "}{"]}"
现在,如果我们知道我们有一个合适的列表,我们可以跳过正则表达式的内容,但最安全的做法是不这样做

在这种情况下,我们还可以使用regsub进行转换

set c [regsub -all {\s*(\S+)\s*} $a {{\1}}]

然而,一旦所需的转换变得更加复杂,编写这种转换可能会变得更加困难。

从字符串获取列表。我们使用空格作为列表元素的分隔符

set a [split "1.2 1.3 1.6 1.7 1.8" " "]
印刷品

foreach one $a {
    puts -nonewline "{$one}"
}
puts ""

也许吧?它不起作用了。我试过同样的命令@WiktorStribiżewn请注意,您想要的格式不是列表,不能用Tcl list命令处理。@PeterLewerin我只想将每个值存储在不同的列表中。当前,大括号作为字符串存储在单个列表中。大括号不是列表构造函数。{1.2}不比1.2多或少。{1.1}{1.2}只是一个包含一个元素的字符串或列表。