2

我有一个字符串,我想检查数组中的任何字符串是否是它的一部分:

set name abcxyz
set array [list abc efg hij]
set List [join $array "|"]
if {[regexp {($List)} $name]} {
    ...
} 

我不想使用 foreach 循环是因为 if 语句中还有一些其他条件,并且每个条件都需要一个 foreach 循环。然后运行时间会增加很多。

任何帮助表示赞赏!

4

1 回答 1

4

您将其传递为{($List)}. 花括号{}表示不执行替换。所以你的正则表达式模式实际上是:

($List)

这有点愚蠢,因为您试图在字符串末尾匹配单词“List”,根据定义,该字符串不应包含更多字符。

你想要的是将它作为"($List)". 双引号""表示执行替换。所以如果你这样做:

regexp "($List)" $name

你的正则表达式模式将是

(abc|efg|hij)

这可能是你想要的。

于 2013-10-18T01:28:15.513 回答