Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于打印带有特定图案的字符串的TCL脚本_Tcl - Fatal编程技术网

用于打印带有特定图案的字符串的TCL脚本

用于打印带有特定图案的字符串的TCL脚本,tcl,Tcl,请查找输入列表 clk_mbist BIST_SETUP ltest_to_mcp_bounding_en bistEn ltest_to_en BIST_EVEN_GROUPWRITEENABLE BIST_ODD_GROUPWRITEENABLE BIST_SELECT BIST_WRITEENABLE {BIST_COL_ADD[1]} {BIST_COL_ADD[0]} {BIST_ROW_ADD[7]} {BIST_ROW_ADD[6]} {BIST_ROW_ADD[5]} {BIST

请查找输入列表

clk_mbist BIST_SETUP ltest_to_mcp_bounding_en bistEn ltest_to_en BIST_EVEN_GROUPWRITEENABLE BIST_ODD_GROUPWRITEENABLE BIST_SELECT BIST_WRITEENABLE {BIST_COL_ADD[1]} {BIST_COL_ADD[0]} {BIST_ROW_ADD[7]} {BIST_ROW_ADD[6]} {BIST_ROW_ADD[5]} {BIST_ROW_ADD[4]} {BIST_ROW_ADD[3]} {BIST_ROW_ADD[2]} {BIST_ROW_ADD[1]} {BIST_ROW_ADD[0]} {BIST_BANK_ADD[0]} BIST_DATA_POLARITY_EN BIST_COLLAR_EN4 BIST_ASYNC_RESET BIST_TESTDATA_SELECT_TO_COLLAR BIST_ON_TO_COLLAR {BIST_WRITE_DATA[1]} {BIST_WRITE_DATA[0]} BIST_SHIFT_COLLAR BIST_COLLAR_SETUP BIST_CLEAR_DEFAULT BIST_CLEAR BIST_COLLAR_HOLD MBISTPG_RESET_REG_SETUP2

当正则表达式与“{”或“}”匹配时,我需要创建一个列表,简单地说,我需要创建一个包含带有花括号的元素的列表

{BIST_COL_ADD[1]} {BIST_COL_ADD[0]} {BIST_ROW_ADD[7]} {BIST_ROW_ADD[6]} {BIST_ROW_ADD[5]} {BIST_ROW_ADD[4]} {BIST_ROW_ADD[3]} {BIST_ROW_ADD[2]} {BIST_ROW_ADD[1]} {BIST_ROW_ADD[0]} {BIST_BANK_ADD[0]} BIST_DATA_POLARITY_EN BIST_COLLAR_EN4 BIST_ASYNC_RESET BIST_TESTDATA_SELECT_TO_COLLAR BIST_ON_TO_COLLAR {BIST_WRITE_DATA[1]} {BIST_WRITE_DATA[0]}
我的输出列表应该是

{BIST_COL_ADD[1]} {BIST_COL_ADD[0]} {BIST_ROW_ADD[7]} {BIST_ROW_ADD[6]} {BIST_ROW_ADD[5]} {BIST_ROW_ADD[4]} {BIST_ROW_ADD[3]} {BIST_ROW_ADD[2]} {BIST_ROW_ADD[1]} {BIST_ROW_ADD[0]} {BIST_BANK_ADD[0]} {BIST_WRITE_DATA[1]} {BIST_WRITE_DATA[0]}
我正在运行的脚本是

set input [list clk_mbist BIST_SETUP ltest_to_mcp_bounding_en bistEn ltest_to_en BIST_EVEN_GROUPWRITEENABLE BIST_ODD_GROUPWRITEENABLE BIST_SELECT BIST_WRITEENABLE {BIST_COL_ADD[1]} {BIST_COL_ADD[0]} {BIST_ROW_ADD[7]} {BIST_ROW_ADD[6]} {BIST_ROW_ADD[5]} {BIST_ROW_ADD[4]} {BIST_ROW_ADD[3]} {BIST_ROW_ADD[2]} {BIST_ROW_ADD[1]} {BIST_ROW_ADD[0]} {BIST_BANK_ADD[0]} BIST_DATA_POLARITY_EN BIST_COLLAR_EN4 BIST_ASYNC_RESET BIST_TESTDATA_SELECT_TO_COLLAR BIST_ON_TO_COLLAR {BIST_WRITE_DATA[1]} {BIST_WRITE_DATA[0]} BIST_SHIFT_COLLAR BIST_COLLAR_SETUP BIST_CLEAR_DEFAULT BIST_CLEAR BIST_COLLAR_HOLD MBISTPG_RESET_REG_SETUP2]

regexp {\{.*\}} $input matched 
puts $matches 

但这是打印一些没有带花括号的元素

{BIST_COL_ADD[1]} {BIST_COL_ADD[0]} {BIST_ROW_ADD[7]} {BIST_ROW_ADD[6]} {BIST_ROW_ADD[5]} {BIST_ROW_ADD[4]} {BIST_ROW_ADD[3]} {BIST_ROW_ADD[2]} {BIST_ROW_ADD[1]} {BIST_ROW_ADD[0]} {BIST_BANK_ADD[0]} BIST_DATA_POLARITY_EN BIST_COLLAR_EN4 BIST_ASYNC_RESET BIST_TESTDATA_SELECT_TO_COLLAR BIST_ON_TO_COLLAR {BIST_WRITE_DATA[1]} {BIST_WRITE_DATA[0]}
你能帮我吗


好的,那么我要求列表中的元素只有“[”或“]”表示向量元素有数字,而不是标量元素,例如下面的列表

{BIST_COL_ADD[1]} {BIST_COL_ADD[0]} {BIST_ROW_ADD[7]} {BIST_ROW_ADD[6]} {BIST_ROW_ADD[5]} {BIST_ROW_ADD[4]} {BIST_ROW_ADD[3]} {BIST_ROW_ADD[2]} {BIST_ROW_ADD[1]} {BIST_ROW_ADD[0]} {BIST_BANK_ADD[0]} {BIST_WRITE_DATA[1]} {BIST_WRITE_DATA[0]}
在列表上,您可以使用循环,或在列表上工作的命令,例如
lsearch
。由于您只查找
[
]
,因此使用glob样式匹配似乎就足够了:

set input [list clk_mbist BIST_SETUP ltest_to_mcp_bounding_en bistEn ltest_to_en BIST_EVEN_GROUPWRITEENABLE BIST_ODD_GROUPWRITEENABLE BIST_SELECT BIST_WRITEENABLE {BIST_COL_ADD[1]} {BIST_COL_ADD[0]} {BIST_ROW_ADD[7]} {BIST_ROW_ADD[6]} {BIST_ROW_ADD[5]} {BIST_ROW_ADD[4]} {BIST_ROW_ADD[3]} {BIST_ROW_ADD[2]} {BIST_ROW_ADD[1]} {BIST_ROW_ADD[0]} {BIST_BANK_ADD[0]} BIST_DATA_POLARITY_EN BIST_COLLAR_EN4 BIST_ASYNC_RESET BIST_TESTDATA_SELECT_TO_COLLAR BIST_ON_TO_COLLAR {BIST_WRITE_DATA[1]} {BIST_WRITE_DATA[0]} BIST_SHIFT_COLLAR BIST_COLLAR_SETUP BIST_CLEAR_DEFAULT BIST_CLEAR BIST_COLLAR_HOLD MBISTPG_RESET_REG_SETUP2]
set result [lsearch -all -inline $input {*\[*\]*}]
# {BIST_COL_ADD[1]} {BIST_COL_ADD[0]} {BIST_ROW_ADD[7]} {BIST_ROW_ADD[6]} {BIST_ROW_ADD[5]} {BIST_ROW_ADD[4]} {BIST_ROW_ADD[3]} {BIST_ROW_ADD[2]} {BIST_ROW_ADD[1]} {BIST_ROW_ADD[0]} {BIST_BANK_ADD[0]} {BIST_WRITE_DATA[1]} {BIST_WRITE_DATA[0]}

*
表示全局样式匹配中的任何字符。

有很多错误
input
是一个列表,所有元素都没有大括号。您看到的大括号用于引用。当您在列表中使用字符串函数
regexp
时,显然您不能期望事情总是顺利进行,您正在将引号大括号强制转换为实际大括号。您使用的表达式是贪婪的,这意味着它将匹配第一个
{
和最后一个
}
之间的任何内容。谢谢Jerry,您能告诉我如何解决此问题吗。我需要更改正则表达式吗?我告诉过你,你看到的大括号只用于引用,也就是说,它们实际上并不存在。知道了这一点,你的问题本身就站不住脚了,所以你应该是那个说出你到底在寻找什么的人?好吧,那么我要求列表中的元素只有“[”或“]”表示数字不是标量的向量元素,例如下面的列表{BIST_colu_ADD[1]}{BIST_colu_ADD[0]}{BIST_ROW_ADD[7]}{BIST_ROW_ADD[6]}{BIST_ROW_ADD[5]}{BIST_ROW_ADD[4]}{BIST_ROW_ADD[3]}{BIST_ROW_ADD[2]}{BIST_ROW_ADD[0]}{BIST_BANK_ADD[0]}{BIST_WRITE_DATA[1]}{BIST_WRITE_DATA[0]}