2013-10-18 79 views
2

我有一個字符串變量定義的工作,我要檢查,如果從一個陣列的任何字符串是它的一部分或不:TCL:邏輯運算符不會在正則表達式

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

我不想要使用foreach循環是因爲if語句中還有其他一些條件,並且每個條件都需要一個foreach循環。那麼運行時間會增加很多。

任何幫助表示讚賞!

回答

4

您將其作爲{($List)}傳遞給您。花括號{}表示不執行替換。所以,你的正則表達式是字面:

($List) 

這是一種愚蠢的,因爲你想它通過定義應包含沒有更多的字符字符串結束之後單詞「列表」匹配。

你想要的是將它作爲"($List)"傳遞。雙引號""表示執行替換。所以,如果你這樣做:

regexp "($List)" $name 

你的正則表達式模式將

(abc|efg|hij) 

這可能是你想要的。

+0

完美答案。 –