TCL中有两个星号stt​​ring匹配

时间:2015-07-20 18:49:05

标签: string tcl match

帮我确定TCL中的一个问题。 通过使用我的宏我想找到字符串,其中包含两个星号(**)。 我尝试使用以下命令:

string match \*\* string_name

但它不起作用。你能解释一下我犯了什么错误以及如何正确地做到这一点吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您实际传递给翻译的是string match ** string_name。你需要将实际的反斜杠传递给解释器,这样它才能理解两个转义的星号,为此你需要添加几个反斜杠:

string match \\*\\* $s

或使用大括号:

string match {\*\*} $s

请注意,如果$s包含2个星号,则上述内容仅匹配 ,而不包含其他任何内容。要在星号之前和之后允许任何内容,您可以使用更多的星号......

string match {*\*\**} $s

还有一些其他方法可以检查一个字符串是否有双星号,你可以使用string first(因为这个不支持表达式,你实际上可以逃脱而不必逃避任何东西):

string first ** $s

如果您获得的内容超过-1,则**中会出现$s

或者如果你碰巧知道一些正则表达式:

regexp -- {\*\*} $s

我认为这是最常见的。