TCL 将文本字符串拆分为多个变量(蛋滴)



我正在研究一个mysql选择和插入脚本,但是在将一行提取为两个变量时遇到问题。

该行作为变量$arg传递,由以下部分组成:"文本字段 1=文本字段 2"我尝试使用"="作为分隔符通过正则表达式将$arg拆分为 $arg 1 和 $arg 2,但我总是将整行解析为 $arg 2 和 $arg 1 为空。

regexp -- {(S+)=(S+)} $arg null $arg1 $arg2

我已经尝试了几种使用正则表达式的方法并更改分隔符,但结果保持不变。它正在通过 tcl v8.5 完成。

我对tcl不是很熟悉,所以我怀疑这主要是由于对tcl/tk的理解滞后。

您也可以使用 split 作为替代方案:

% set results [split $arg "="]

这为您提供了一个包含您要查找的两个部分的列表。

然后,您可以使用lindex来引用每个元素。

% puts [lindex $results 0]
text field 1
% puts [lindex $results 1]
text field 2

或者如果你想将它们存储在变量arg1arg2中,你可以使用lassign

% lassign $results arg1 arg2
% puts $arg1
text field 1
% puts $arg2
text field 2

使用变量的名称,而不是变量值本身:

regexp -- {(S+)=(S+)} $arg null arg1 arg2

如果使用$var1则在调用命令之前,它将替换为该变量的值,此时该命令不知道使用了哪个变量。

在解析这些东西时,你应该注意只与你期望的完全匹配。(您需要记住,每当使用 Tcl 赋值变量时,都需要提供变量的名称arg1 — 而不是变量的内容 — $arg1

regexp -- {([^s=])=(S+)} $arg null arg1 arg2

您还应该检查该regexp调用的结果,以查看 RE 是否匹配。

相关内容

  • 没有找到相关文章

最新更新