繁体   English   中英

TCL:逻辑运算符不适用于regexp中定义的变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM