String TCL中的两个星号字符串匹配

String TCL中的两个星号字符串匹配,string,tcl,match,String,Tcl,Match,帮我决定TCL中的一个问题。 通过使用我的宏,我希望找到字符串,它包含两个星号(**)。 我尝试使用以下命令: string match \*\* string_name 但它不起作用。你能解释一下我在哪里犯了错误以及如何正确地做吗 提前谢谢 您实际传递给解释器的是字符串匹配**string\u name。您需要将实际的反斜杠传递给解释器,以便解释器能够理解两个转义星号,为此,您需要再添加两个反斜杠: string match \\*\\* $s 或使用大括号: string match {

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

string match \*\* string_name
但它不起作用。你能解释一下我在哪里犯了错误以及如何正确地做吗


提前谢谢

您实际传递给解释器的是
字符串匹配**string\u name
。您需要将实际的反斜杠传递给解释器,以便解释器能够理解两个转义星号,为此,您需要再添加两个反斜杠:

string match \\*\\* $s
或使用大括号:

string match {\*\*} $s
请注意,仅当
$s
包含2个星号而不包含其他内容时,上述内容才会匹配。要允许在星号之前和之后使用任何内容,可以使用更多星号

string match {*\*\**} $s
还有一些其他方法可以检查字符串是否有双星号,例如,您可以先使用
字符串
(由于此方法不支持表达式,您实际上可以不必转义任何内容就可以离开):

如果您得到的值大于
-1
,则
***
出现在
$s

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

regexp -- {\*\*} $s

这些是我认为最常见的。

这个正则表达式没有反斜杠y:
{[*][*]}
@glennjackman同意,尽管更长。与之类似的是
{[*]{2}
Jerry,非常感谢您的帮助!你帮了我很多!
regexp -- {\*\*} $s