【问题标题】:two asterisk sttring match in TCLTCL中的两个星号字符串匹配
【发布时间】:2015-07-20 18:49:04
【问题描述】:

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

string match \*\* string_name

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

提前致谢!

【问题讨论】:

    标签: string tcl match


    【解决方案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}}类似的一个
    • 杰瑞,非常感谢您的帮助!你帮了我很多!
    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多