我需要有关tcl的正则表达式的帮助。我想检测$字符,但它没有标记。有什么想法吗?
set cell {ABC_ONE_123_$12345$wc_PIE_IN_SKY}
string match $ $cell
答案 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