首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

tcl"switch -glob"与变量不匹配

tcl的"switch -glob"语句用于在多个模式中进行匹配,并执行与匹配模式相对应的代码块。然而,当使用变量作为匹配模式时,可能会出现不匹配的情况。

在tcl中,"switch -glob"语句使用通配符进行模式匹配。通配符包括"*"(匹配任意字符序列)和"?"(匹配单个字符)。当使用变量作为匹配模式时,如果变量的值中包含通配符,那么它将被视为普通字符而不是通配符。

例如,假设有一个变量pattern的值为"abc",我们希望使用"switch -glob"语句来匹配以"abc"开头的字符串。然而,由于"switch -glob"将变量的值视为普通字符,它将尝试与字符串"abc"进行匹配,而不是以"abc"开头的字符串。

为了解决这个问题,可以使用"switch -regexp"语句来进行正则表达式匹配。正则表达式可以更灵活地处理模式匹配,并且可以正确处理变量中包含的通配符。

以下是一个示例代码,演示了如何使用"switch -regexp"语句进行模式匹配:

代码语言:tcl
复制
set pattern "abc*"
set string "abcdef"

switch -regexp $string {
    "^$pattern" {
        puts "匹配成功"
        # 执行与匹配模式相对应的代码块
    }
    default {
        puts "不匹配"
    }
}

在上面的示例中,我们使用"^$pattern"作为正则表达式模式来匹配以"abc"开头的字符串。如果匹配成功,将执行与匹配模式相对应的代码块。

需要注意的是,正则表达式模式中的特殊字符需要进行转义,以确保它们被正确解释。在上面的示例中,我们使用了"^"来匹配字符串的开头,因此在正则表达式模式中需要进行转义。

总结起来,"switch -glob"语句在匹配变量时可能会出现不匹配的情况。为了解决这个问题,可以使用"switch -regexp"语句进行正则表达式匹配。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

tcl三部曲(三)、数组、流控制函数

可以使用简单变量的地方都可以使用数组,例如set命令: ? 选项option : (1)、array getarrayName ?pattern? 返回索引pattern匹配的元素对的列表。...列表中奇数个元素是匹配的索引,其后的元素是索引对应的值。如果没有指定pattern,则返回所有元素。如果arrayName不是数组变量的名称,或者没有匹配索引,则返回空列表。 ?...返回一个包含mode模式下pattern匹配的数组索引的列表。mode可以是-exact、-glob或-regexp,默认为-glob。如果未指定modepattern则返回所有索引。...如果没有匹配的索引或者arrayName不是数组变量的名称,则返回空字符串。 ?...options表示匹配的方式,switch支持三种匹配方式: —exact方式(默认) —glob方式 —regexp方式 example1 ? example2 ?

2K20

tcl三部曲(一)、替换、引用匹配

Part02 替换 Tcl共有三种替换方式:替换变量$、命令替换[]和反斜杠替换\。...替换变量:$ 变量替换由$触发,$此处表示调用,$将Tcl变量的值插入单词中,如下所示: ?...上述想法的支撑在于对于仅有一个删除对象的验证,此时元素的地址list的首地址相同(类似C语言中的数组和元素),此时file delete [glob *.v]就会删除成功: ?...为了删除所有.v文件,需要在[glob*.v]前加上{*}修饰符,告诉Tcl解析工具以空格为界解析文件名。 反斜杠替换\ ?...Part04三种匹配方式 Tcl中存在三种匹配方式:exact、glob、正则表达式。 exact和glob exact就是严格匹配,即两个字符串必须完全相同,不允许通配符的出现。 ? ?

3.8K11
  • tcl三部曲(二)、变量列表

    正文开启,本次分享的是变量列表部分的笔记操作实例 Part05变量 属性: 1、 无需声明定义,直接使用set进行创建,使用unset进行移除,变量包含变量名和变量值两部分。...(整数、实数、数组、列表、tcl脚本etc.) 变量名 : 变量名由字母数字和下划线构成,遇到非数字、字母、下划线就会停止。...Pattern string 含义:如果Pattern和sting相匹配,返回1,否则返回0,如果开启-nocase选项,则不区分大小写。 使用glob-style方式通配符: ?...在list中搜索pattern匹配的一个或多个元素,option选项控制模式匹配方式(-exact/-glob/-regexp),是返回元素值(-inline)还是索引,是搜索所有的匹配(-all)还是值搜索最先出现的匹配等...默认使用-glob匹配,返回第一处匹配的索引,没有匹配元素时返回-1。

    1.7K10

    《数字集成电路静态时序分析基础》笔记③

    TCL在EDA工具中的拓展应用 通过对Design Object的分析,了解和学习DC获取电路并进行解析的方法 ?...修改参数即可应用到不同设计中 自动化电路综合平台只需要用户将待综合的设计库文件放入一个文件加,修改带综合设计对象有关的环境变量参数,在命令窗唤醒DC的指令,即自动化地完成综合过程,并得到综合后的网表文件和所需报告.../top.tcl ? 建立reportswork两个文件夹。...: 设计文件通常使用verilog文件,所以拓展名通常为v,所以先将变量extension设为v 调用filelist.tcl脚本,将所有拓展名为v的文件的文件路径输出到一个名为v_list的文档 打开...判断当前目录下的文件拓展名是否设置的变量extension一直,如果一致,就将该文件路径输出到指定的文件 如果有文件夹,则递归调用本程序,直至结束 ?

    1.3K20

    vite入坑之路:react+vite动态导入报错@vite-ignore的解决方法

    /dir/bar.js') } import.meta.glob() 方法匹配某个菜单下的所有模块,所以你还需要进行遍历。...例如,我用react写的话,因为会有index.jsx的原因: import.meta.glob('@/pages/*/*') 会匹配pages下的所有一级目录 import.meta.glob('...@/pages/*/*/*') 会匹配pages下的所有二级目录 …以此类推 Glob 导入注意事项 这只是一个 Vite 独有的功能而不是一个 Web 或 ES 标准 该 Glob 模式会被当成导入标识符...Glob 匹配是使用 fast-glob 来实现的 —— 阅读它的文档来查阅 支持的 Glob 模式。 你还需注意,所有 import.meta.glob 的参数都必须以字面量传入。...你 可以在其中使用变量或表达式。

    2.5K20

    shell expect权威指南和实战

    对于其他匹配的信息则会完全忽略。当脚本得到特征字符串时,expect将发送/bin/tcsh和 一个回车符给chsh命令。...*表示表示一个或多个任意字符,将其存放在()中是因为将匹配结果存放在一个变量中以实现随后的对匹配结果的访问。 (2)当发现一个匹配则检查包含在[]中的字符串,查看是否为/bin/tcsh。...#(2)变量file被设置为脚本的第一个参数的值,是通过一个Tcl函数lindex来实现的,该函数从列表/数组得到一个特定的元素。[]用来实现将函数lindex的返回值作为set命令的参数。...#(3)如果脚本的第一个参数是小写的"i",那么变量nofile被设置为1,否则通过调用Tcl的函数isfile来验证参数指定的文件存在,如果不存在就报错退出。...no expect: does "\n" (spawn_id exp0) match glob pattern "\n"?

    1.9K21

    tcl学习】vivado write_project_tcl

    quiet] [‑verbose] 使用说明: [-paths_relative_to]覆盖源文件的引用目录变量相对路径默认值...: 脚本输出目录路径 [-origin_dir_override]将“origin_dir”目录变量设置为指定值 (默认值是使用-paths_relative_to switch指定的值)默认值:无 [...默认值:1 [-absolute_path]将所有文件路径设为绝对路径,原始项目目录相对应 [-dump_project_info]写入对象值 [-use_bd_files]直接使用bd源,而不是将procs...写到创造他们 [-internal]在生成的tcl脚本中打印基本头信息 [-quiet]安静地执行命令,返回来自命令。...[-verbose]在命令执行期间挂起消息限制 要生成的tcl脚本文件的名称 举例: 下面的示例为被命名recreate.tcl对于当前项目: write_project_tcl recreate.tcl

    2.3K20
    领券