带有tcl和$ in变量值的正则表达式

时间:2014-02-18 15:27:32

标签: tcl

我需要有关tcl的正则表达式的帮助。我想检测$字符,但它没有标记。有什么想法吗?

set cell {ABC_ONE_123_$12345$wc_PIE_IN_SKY}
string match $ $cell

1 个答案:

答案 0 :(得分:4)

字符串匹配和glob模式

string match glob模式匹配,而不是正则表达式。另外,它会尝试匹配整个字符串。 glob模式$不匹配,因为字符串不仅仅是一个美元符号。但是*$*会这样做,因为它表示“零个或多个字符,一个美元符号,零个或多个字符”。因为$由tcl shell专门处理,所以必须正确引用它。

例如:

% string match {*$*} $cell
1
% string match *\$* $cell
1

正则表达式

如果您确实想要进行正则表达式搜索而不是全局模式匹配,请使用regexp命令。在这种情况下,你必须a)保护$不受正常的tcl解释,就像使用string match一样,并且b)因为它对正则表达式是特殊的,你必须保护美元符号不受正则表达式的解释。

以下是一个例子:

% regexp {\$} $cell
1
% regexp \\\$ $cell
1