Tcl 从字符串中获取字段,将其存储在变量中,然后进行比较
我有Tcl 从字符串中获取字段,将其存储在变量中,然后进行比较,tcl,Tcl,我有 From:“1234”;标签=4834BAF1 我想复制x-j1;x-refci=27684157;x-just1=S58从上方从标题,将其存储在变量中,比如s1,并与s2(另一个变量包含类似字符串)进行比较。您可以使用正则表达式:捕获第一个分号和结束角括号之间的文本: From: "1234"<sip:1234@8.43.33.101;x-j1;x-refci=27684157;x-just1=S58>;tag=4834BAF1 你试过什么了吗?没有,杰瑞。我对tclkt
From:“1234”;标签=4834BAF1
我想复制
x-j1;x-refci=27684157;x-just1=S58
从上方从标题,将其存储在变量中,比如s1
,并与s2
(另一个变量包含类似字符串)进行比较。您可以使用正则表达式:捕获第一个分号和结束角括号之间的文本:
From: "1234"<sip:1234@8.43.33.101;x-j1;x-refci=27684157;x-just1=S58>;tag=4834BAF1
你试过什么了吗?没有,杰瑞。我对tclktk非常陌生。我只需要检查一下这个例子,这对你会有帮助:Tcl文档位于--通读,它描述了该语言的语法规则(只有12条规则)有没有特殊原因不使用regexp{.*?;(.+)>}$str都需要?没有,我只是喜欢给读者写一个内联注释:你经常会看到regexp
这样叫:regexp$pattern$string->capture\u var
——带有奇数符号->
。这是一个常见的习语,向读者表明我们不关心匹配的整个文本,我们只关心捕获的部分<代码>->
实际上是一个有效的Tcl变量名。我本可以在我的答案中使用->
而不是全部
。
set str {From: "1234"<sip:1234@8.43.33.101;x-j1;x-refci=27684157;x-just1=S58>;tag=4834BAF1}
regexp -- {.*?;(.+)>} $str all wanted
puts $wanted ; # => x-j1;x-refci=27684157;x-just1=S58
set start [string first {;} $str]
set end [string first {>} $str]
set wanted [string range $str $start+1 $end-1]