2015-07-20 73 views
2

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

string match \*\* string_name 

但它不起作用。你能解释我在哪里犯了一个错误,以及如何正确地做到这一点?

在此先感谢!

回答

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 

这些都是最常见的,我认为。

+2

这个正则表达式反斜杠-Y:'{[*] [*]}' –

+0

@glennjackman同意,尽管时间更长。与[{[*] {2}}类似的一个'​​ – Jerry

+0

杰里,非常感谢您的帮助!你帮了我很多! –