TCL中的两个星号字符串匹配
Posted
技术标签:
【中文标题】TCL中的两个星号字符串匹配【英文标题】:two asterisk sttring match in TCL 【发布时间】:2015-07-20 18:49:04 【问题描述】:帮我解决 TCL 中的一个问题。
通过使用我的宏,我想查找包含两个星号 (**
) 的字符串。
我尝试使用以下命令:
string match \*\* string_name
但它不起作用。你能解释一下我在哪里犯了错误以及如何正确地做吗?
提前致谢!
【问题讨论】:
【参考方案1】:您实际传递给解释器的是string match ** string_name
。您需要将实际的反斜杠传递给解释器,以便它能够理解两个转义的星号,为此您需要添加更多的反斜杠:
string match \\*\\* $s
或者使用大括号:
string match \*\* $s
请注意,如果$s
包含 2 个星号,则上述内容将匹配 ,仅此而已。要允许星号之前和之后的任何内容,您可以使用更多星号...
string match *\*\** $s
还有其他一些方法可以检查字符串是否有双星号,例如,您可以使用string first
(由于此方法不支持表达式,您实际上可以不用转义就可以逃脱):
string first ** $s
如果你得到的东西大于-1
,那么**
会出现在$s
中。
或者如果你碰巧知道一些正则表达式:
regexp -- \*\* $s
这些是我认为最常见的。
【讨论】:
这个正则表达式少了反斜杠:[*][*]
@glennjackman 同意,虽然时间更长。与[*]2
类似的一个
杰瑞,非常感谢您的帮助!你帮了我很多!以上是关于TCL中的两个星号字符串匹配的主要内容,如果未能解决你的问题,请参考以下文章