【发布时间】:2014-03-16 12:51:04
【问题描述】:
反对:获取“{”“}”边界内的所有单词。
input_file.txt:
set_false_path -from [get_ports {a/b[1] ab/cd_1 abcd_1_ad_}] -through [get_pins {th/th1 th2/th2[2]}]
set_derate -whatever [get_ports {xxx/xx1 xxx xxxx_1}]
set_false_path 3 -to [get_pins {aaa/d aaa/b}] -from [get_abc {abc/ac/dd nnn_2/2}]
预期的 output_file.txt:
a/b[1]
ab/cd_1
abcd_1_ad_
th/th1
th2/th2[2]
aaa/d aaa/b
abc/ac/dd
nnn_2/2
注意:可能有两对或更多对 "{" "}" ,我想抓住 "{" 和 "}" 中的所有这些词,无论它们有多少。
这是我的代码:
set inputfile [open "input_file.txt" r]
set outputfile [open "output_file.txt" w]
while { [gets $inputfile line] != -1 } {
set first_word [lindex [split $line ""] 0]
if { regexp "set_false_path" $first_word} {
# HOW TO grab all words between "{" and "}" ; split them ; put on output_file
}
} else {
}
close $inputfile
close $outputfile
【问题讨论】:
-
你有
set_false_path和set false_path?这是一个错字还是真的是这样?还有更多不同的显示方式吗? -
干草@杰瑞。输入错误,都是 set_false_path。谢谢指正!
-
好吧,好吧,我之前的脚本seems to be working on Tcl8.4(我使用列表而不是文件,因为我无法在测试站点上上传文件)。这是新数据格式的演示:link
-
Hay Jerry,我已经尝试了我自己的代码,并尝试在你给我的链接上运行代码 [link] (codepad.org/rLqZJrPL),但是我不知道我错过了什么,因为我没有从链接获取任何输出。当我在我的机器上运行它时,我得到了一个接近预期的结果,但我仍然得到了意想不到的空间。输入文件:[链接](imageshack.com/a/img138/4871/4fmy.png);输出结果:[link] (imageshack.com/a/img833/7131/iza3.png) 请查看。
-
我不知道你为什么使用正则表达式来检查第一个单词,而实际上没有必要。您的代码中有一些错误,即
split。我修复了这个问题并使用了字符串比较:link 和string trim来删除额外的尾随/前导空格。