[英]TCL: logical operator doesn't work in variable defined in regexp
我有一个字符串,我想检查数组中的任何字符串是否是它的一部分:
set name abcxyz
set array [list abc efg hij]
set List [join $array "|"]
if {[regexp {($List)} $name]} {
...
}
我不想使用foreach循环是因为if语句中还有其他一些条件,每个条件都需要一个foreach循环。 然后,运行时间将增加很多。
任何帮助表示赞赏!
您将其作为{($List)}
传递。 花括号{}
表示不执行替换。 因此,您的正则表达式模式实际上是:
($List)
这很愚蠢,因为您尝试在字符串的末尾匹配“ List”一词,根据定义,该字符串不应包含更多字符。
相反,您想要将其传递为"($List)"
。 双引号""
表示执行替换。 因此,如果您这样做:
regexp "($List)" $name
您的正则表达式模式将是
(abc|efg|hij)
这可能是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.