string - TCL数据结构,需要提取匹配和比较

  显示原文与译文双语对照的内容

我完全是编程完全停止的新手。 我必须提出一个检查互连fpga的电缆的程序。 从命令提示符( TCL接口) 中,输入命令后得到以下命令:

{A13-D1 CON_CABLE_HT3_25 [serial# of the cable] J1 {1V0 1V2 1V35 1V5 1V8 2V5 3V3} [another random serial number]} 

现在对系统上的每个端口重复这里操作。 A13 是端口的NAME,电缆连接到该端口。 我需要把电缆的序列号加起来,然后把它们放在一个或者其它东西上。 所以如果 A13的序列号( 电缆) 与 D1 相同,那么它就意味着 A13 连接到 D1 。 所以它可以写成 A13 D1 这样更有意义。

获取所有连接之后,我需要将它与配置文件进行比较,其中所有连接都是给定的。

我不需要别人来做这个,我只是不知道如何开始 ! 有什么想法吗?

我想在tcl中做这个,作为我将用于获取数据的所有命令。

时间: 作者:

这条线看起来像一个大括号列表,这个列表中有一个is在另一边是完全可以能的。 这使得提取信息变得容易 !

假设你已经在名为 line的变量中得到了行,那么你可以使用 lindex 获取连接信息:


set connectInfo [lindex $line 0 0]

然后使用 split 和一个 lindex 来获取以下两个部分:


set port [lindex [split $connectInfo"-"] 0]

你还可以使用 regexp$connectInfo 中提取信息:


# Anchored because we're matching the whole string
regexp {^(w+)-w+$} $connectInfo -> port
# You should check the result of regexp to see if the match actually succeeded
# if {![regexp {^(w+)-w+$} $connectInfo -> port]} {
# error"it didn't match! waaah!"
# }

但是,编写正则表达式往往需要了解数据的格式。 ( 如果使用 正规表达式,则将它们放在大括号中,这样就避免了 backslashitis 。)

作者:
...