TCL中的两个星号串匹配
问题描述:
帮我决定TCL中的一个问题。 通过使用我的宏我想找到字符串,其中包含两个星号(**
)。 我试图用下面的命令:TCL中的两个星号串匹配
string match \*\* string_name
但它不起作用。你能解释我在哪里犯了一个错误,以及如何正确地做到这一点?
在此先感谢!
答
实际传递给口译员的是string match ** string_name
。您需要将实际反斜杠传递给解释,以便它然后将知二逃脱星号,要做到这一点,你需要添加一对夫妇更反斜线:
string match \\*\\* $s
还是用括号:
string match {\*\*} $s
请注意,如果$s
包含2个星号,则上述内容仅匹配,而没有其他内容。要允许之前和星号后,您可以使用多个星号什么...
string match {*\*\**} $s
还有一些其他的方法来检查,如果一个字符串有双星号,例如你可以使用string first
(而且由于这一个不支持表达式,你其实可以逃脱,而无需任何逃生):
string first ** $s
如果你得到的东西比-1
时,则**
存在于$s
。
或者,如果你碰巧知道一些规则表达式:
regexp -- {\*\*} $s
这些都是最常见的,我认为。
这个正则表达式反斜杠-Y:'{[*] [*]}' –
@glennjackman同意,尽管时间更长。与[{[*] {2}}类似的一个' – Jerry
杰里,非常感谢您的帮助!你帮了我很多! –