我有一个字符串,我想检查数组中的任何字符串是否是其中的一部分:
set name abcxyz
set array [list abc efg hij]
set List [join $array "|"]
if {[regexp {($List)} $name]} {
...
}
我不想使用foreach循环是因为if语句中还有一些其他条件,并且每个都需要一个foreach循环。然后运行时间会增加很多。
感谢任何帮助!
答案 0 :(得分:4)
您将其作为{($List)}
传递。花括号{}
表示不执行替换。所以你的正则表达式是字面意思:
($List)
这有点愚蠢,因为你试图在字符串结尾之后匹配单词“List”,根据定义它应该不再包含字符。
您想要的是将其作为"($List)"
传递。双引号""
表示执行替换。所以如果你这样做:
regexp "($List)" $name
你的正则表达式模式将是
(abc|efg|hij)
这可能是你想要的。