Regex TCL数据结构,需要提取、匹配和比较

Regex TCL数据结构,需要提取、匹配和比较,regex,string,structure,tcl,Regex,String,Structure,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-D1 CON_电缆\u HT3_25[电缆的序列号]J1{1V0 1V2 1V35 1V5 1V8 2V5 3V3}[另一个随机序列号

我完全不熟悉编程句号。 我必须想出一个程序来检查连接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-D1 CON_电缆\u HT3_25[电缆的序列号]J1{1V0 1V2 1V35 1V5 1V8 2V5 3V3}[另一个随机序列号]} 现在,对系统上的每个端口重复此操作
A13
是连接电缆的端口的名称。我需要把电缆的序列号匹配起来,然后把它们放在一个阵列里或者别的什么东西里。因此,如果
A13
D1
具有相同的序列号(电缆),则意味着
A13
连接到
D1
。因此它可以写成
a13d1
,这样更有意义

在获得所有连接后,我需要将其与一个配置文件进行比较,其中给出了所有连接

我不需要有人为我做这件事,我只是不知道如何开始!有什么想法吗


我希望在tcl中执行此操作,因为我将使用的所有命令都在tcl中获取此数据。

该行看起来像一个大括号引用的tcl列表,考虑到另一侧有tcl是完全可能的。这使得提取信息变得容易

假设您在一个名为
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!"
#    }

然而,编写正则表达式往往需要非常了解数据的格式。(如果使用正则表达式,请将它们放在大括号中,以避免反斜杠。)

谢谢,现在我已经获得了所有的连接器和电缆等。谢谢,现在我已经获得了所有的连接器和电缆等。我现在需要做的是将其与另一个变量中存储的数据进行匹配,以确保连接相同,返回任何不应该存在的连接..或任何错误的连接!例如$data1=>{{S1.a1s2.A1}{S2.b1s2.C2}}$date2=>{{S2.c2s2.B1}{S1.a1s2.A1}}所以在每个元素中它告诉u连接,例如数据[0]是S1.A1连接到S2.A1的。它们可以是任何格式,因此如果$data2中的是S2.A1 S1.A1,而$data1中的是S1.A1 S2.A1,那么它们仍然是相同的连接。因此,我将如何比较这两个变量来测试连接。请不要为我这样做,任何提示都非常感谢!!我已经看过了lsearch之类的东西,但是当我试图提出一个algorithm@user3201970我现在的真正想法是将数据分成更小的逻辑部分。如果您一次只能看到如何进行一种类型的拆分,请执行您可以看到的部分,然后查看拆分后如何处理单个单元。这是你处理几乎任何复杂任务的方式:把它分解成更简单的任务。(别忘了“查阅文献”寻找图上有用的算法;这听起来是很有用的。)