将其放入 TCL 正则表达式中的转义字符串

2024-02-08

I use Expect作为测试框架并编写一些辅助函数来简化匹配模式的键入expect命令。

因此,我寻找将任何字符串转换为字符串的函数,其中所有特殊的正则表达式语法都被转义(例如*, |, +, [和其他字符),这样我就可以将任何字符串放入正则表达式中,而不必担心我会破坏正则表达式:

expect -re "^error: [escape $str](.*)\\."
refex "^error: [escape $str](.*)\\."  "lookup string..."

For expect -ex and expect -gl编写转义函数非常容易。但对于expect -re太难了,我是TCL新手……

PS我编写了这段代码,目前正在测试它们:

proc reEscape {str} {
    return [string map {
        "]" "\\]" "[" "\\[" "{" "\\{" "}" "\\}"
        "$" "\\$" "^" "\\^"
        "?" "\\?" "+" "\\+" "*" "\\*"
        "(" "\\(" ")" "\\)" "|" "\\|" "\\" "\\\\"
    } $str]
}

puts [reEscape {[]*+?\n{}}]

一种安全的策略是转义所有非单词字符:

proc reEscape {str} {
    regsub -all {\W} $str {\\&}
}

The &将被表达式中匹配的内容替换。

Example

% set str {^this is (a string)+? with REGEX* |metacharacters$}
^this is (a string)+? with REGEX* |metacharacters$

% set escaped [reEscape $str]
\^this\ is\ \(a\ string\)\+\?\ with\ REGEX\*\ \|metacharacters\$
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将其放入 TCL 正则表达式中的转义字符串 的相关文章

  • 转义 C++ 字符串

    将 C std string 转换为另一个 std string 的最简单方法是什么 它转义了所有不可打印的字符 例如 对于两个字符的字符串 0x61 0x01 结果字符串可能是 a x01 或 a 01 看看Boost的字符串算法库 ht
  • 如何从 tcl 列表中删除空元素

    你好 我有以下清单 设置 qprList 12345 12345
  • 如何正确转义 HTML 属性中的引号?

    我在网页上有一个下拉菜单 当值字符串包含引号时 该下拉菜单会损坏 其值为 asd 但在 DOM 中它始终显示为空字符串 我已经尝试了所有我知道的方法来正确转义字符串 但无济于事
  • Escape String - 在 Javascript 中输出rails字符串[重复]

    这个问题在这里已经有答案了 我正在尝试将字符串值分配给 erb 文件中的 javascript 对象 如下所示 var data name 问题是 如果name is Tom s small ears 的输出data name将会Tom x
  • 从 PHP 中的字符串中删除转义序列

    我正在使用一个已转义字符序列的 mysqldump 文件 我需要知道字符串的长度作为其数据库值 但转储中包含转义字符 这会增加字符串的长度 我用过stripslashes 它正确地取消转义单引号和双引号 但它不会触及 r n 我担心其中还有
  • 为什么是 ”\?” C/C++ 中的转义序列?

    C C 中有四种特殊的非字母字符需要转义 单引号 双引号 反斜杠 和问号 显然是因为它们有特殊的含义 对于单身char 对于字符串文字 对于转义序列 但为什么是 其中之一 我今天读了教科书上的转义序列表 我意识到我已经never逃脱了 以前
  • 将带有星号的注册表项传递给测试路径

    我想通过以下方式运行此注册表路径Test Path在 PowerShell 中 但它包含一个星号 该星号在注册表中有效 但在 Windows 路径中无效 问题是 当我通过它时 Test Path将星号视为通配符 因此这需要非常非常长的时间
  • 使用 su 和 Expect 脚本登录用户时遇到问题

    我正在为一个班级制作一个网站 您可以使用用户名和密码登录 然后它会将您带到一个显示您在班级中的成绩的页面 该网站正在运行bash脚本 https github com jduga002 rapache 并将托管在用户已有用户名和密码登录的计
  • 如何在 Perl 脚本中加密或隐藏密码?

    我正在研究 Perl 脚本 它使用Expect http search cpan org dist Expect通过 telnet 登录到远程计算机 不要问 必须使用 telnet 我还根据需要执行 perforce p4 登录操作 并使用
  • 转义字符串中的反斜杠

    我想知道什么是转义字符串中的反斜杠而不添加不必要的斜杠的好方法 我的意思是 通常如果我想转义字符串中的反斜杠 最简单的方法是使用String Replace 像这样 string s someString Replace 可以使用正则表达式
  • 关于Tcl源码的问题

    我有一个名为 test7 tcl 的文件 namespace eval dai variable name ratzip variable birthday 1982 proc hello variable name variable bi
  • 通过 Python 的 elementtree 替换作为数字字符引用一部分的 & 符号

    我正在使用 Python 的 elementtree 模块来编写一些 XML 我正在使用 Python 2 7 和 3 2 我的一些元素的文本字段包含数字字符引用 然而 一旦我使用 elementtree 的tostring字符引用中的所有
  • Rails escape_javascript 通过转义单引号创建无效的 JSON

    ActionView中的escape javascript方法转义撇号 作为反斜杠撇号 解析为 JSON 时会出错 例如 消息 我在这里 在打印时是有效的 JSON message I m here But 输出 I m here 导致无效
  • 将整个单词与特殊字符匹配的正则表达式不起作用? [复制]

    这个问题在这里已经有答案了 我正在经历这个问题C Regex Match 整个单词 https stackoverflow com q 1209049 443568 它说要匹配整个单词使用 b模式 b 这对于匹配没有任何特殊字符的整个单词效
  • python IDLE shell 似乎无法正确处理一些转义

    例如 b 退格键打印为四元 在下面的示例中显示为 但是 n 换行是可以的 gt gt gt print abc bd abc d gt gt gt print abc nd abc d 我在 Vista pro python 2 7 下运行
  • 带有 = 和 a 的正则表达式;

    我正在尝试使用正则表达式来查找以等号开头的所有子字符串 并以分号 之间可以有任意数量的字符 应该是这样的 由于某种原因 equals 没有注册 是否有某种转义字符可以使正则表达式注意到我的等号 我正在用Java工作 如果这与这个问题有任何关
  • 转义字符串中的引号

    我有一个 python 字典 例如 pk 1 name John size 1 4 etc 该尺寸为 1 4 英寸 我如何 转义 该引用 所以它仍然会显示为 1 4 它是一个列表 所以我不能像这样手动编码1 4 我试过replace 编辑
  • 如何使用 regexp 来匹配 TCL 中的括号

    我有一个关于在 TCL 中使用正则表达式匹配括号的问题 例如我有一个像这样的字符串 yes it is true and it is fine 我只想匹配这部分yes it is true 如何搭配呢 您可以将括号括在字符类中 如 boba
  • Tk 框架内的 Chrome 网页

    我想在 Tcl Tk 框架内运行我的 chrome 页面 我必须从 Windows 平台运行我的脚本 到目前为止 我可以使用 start 命令启动 chrome 页面 如何将我的 chrome 页面包含在 Tk 窗口内 eval exec
  • 使用 Expect 自动化 xterm

    我正在尝试自动化xterm窗口使用Expect 虽然我已经知道Expect无法控制此类 GUI 应用程序 但有一个调整机制解释于探索期待 http shop oreilly com product 9781565920903 do pack

随机推荐

  • 测试php字符串是否为整数

    post用于模拟 POST 我发现 POST int 是一个字符串 我怎样才能知道是否 post int 是一个整数 下面表明它不是整数 编辑 根据文档 http php net manual en function is int php
  • 如何覆盖 gem 依赖?

    我有 2 个 gem 它们依赖于冲突版本的 hashie 一个需要 gt 1 2 0 另一个需要 3 3 1 Bundler could not find compatible versions for gem hashie In Gemf
  • 如何在多个多面 ggplot2 图形中实现相同的面大小和比例?

    我有一系列ggplot2具有恒定数量的水平面但不同数量的垂直面的图形 我想将图形保存为横向 a4 格式的 pdf 但是 我不知道如何才能实现相同比例的面 如果我尝试手动调整它并改变width and height对于不同数量的垂直面 图之间
  • 正则表达式不允许输入字段中有空格

    我的表单中有一个用户名字段 我不想在字符串中的任何地方允许空格 我已经使用了这个正则表达式 var regexp S 如果字符之间有空格 这对我有用 也就是说 如果用户名是ABC DEF 如果开头有空格 则不起作用 例如
  • 如何设置像 blogspot 这样的子域

    当用户注册我的网站时 应该如何为他们设置子域 需要哪些基础设施 我正在使用 Linux 服务器 您可以使用特定的 DNS CNAME or A AAAA 每个已知子域的条目 或接受 example com 的通配符 DNS 条目 ORIGI
  • Pandas 系列 - 打印列和行

    现在我不太担心在系列中获取数据的最有效方法 假设我的系列如下 A 1 B 2 C 3 D 4 如果我使用 for 循环来迭代它 例如 for row in seriesObj print row 上面的代码将在右侧打印值 但是可以说 我想获
  • 禁用 JTextPane 中的编辑,同时允许可见的光标移动

    我有一个JTextPane它是通过从文件中读取来填充的 然后对数据进行解析和格式化 该用户无权编辑JTextPane 但我希望他们能够使用可见的光标在其中导航 如果我使用setEditable false 光标是不可见的 尽管可以通过按住来
  • 为什么java在eclipse中运行会出现编译时错误

    interface A public void f public void g class B implements A public void f System out println B f public class Main publ
  • 什么时候需要使用 renderer.outputEncoding = THREE.sRGBEncoding

    我是 Three js 的新手 我一直在通过尝试制作简单的场景并了解官方示例的工作原理来学习 Three js 最近我一直在看https trijs org examples q trans webgl materials physical
  • 使用 PHP/MySQL 进行搜索过滤

    我正在尝试在我的献血者应用程序中创建搜索 过滤选项 可以通过性别 姓名 血型或选择全部三项来搜索捐赠者 这是我的代码 function search donar POST by name POST by name by sex POST b
  • 从 chrome 扩展注入的 js 访问全局 js 变量

    我正在尝试创建一个带有侧面板的扩展 此侧面板将包含一些按钮 这些按钮将根据主机页面状态执行操作 我跟着这个例子 https stackoverflow com questions 39610205 how to make side pane
  • 网格的 VBO 不正确:某些三角形已连接且不应连接 [2D]

    我正在用这段代码生成我的VBO int SCREEN WIDTH 800 int SCREEN HEIGHT 480 int PIXEL PER VERTEX 4 int CAVERN TEXTURE WIDTH 1024 int CAVE
  • 调整白色图像大小后获得灰色边框

    我在谷歌上搜索某种解决方案 我找到了一个 我尝试在我的代码中实现它 但它不起作用 问题是 调整白色图像的大小后 它们会得到灰色边框 这是我找到的解决方案的链接 It says 出现此问题的原因是您将图像数据插值到 新尺寸 但沿边缘没有可插入
  • 如果 jQuery 尚未加载,如何加载它?

    我有一个初始化程序 js其中包含以下内容 if typeof jQuery undefined var headTag document getElementsByTagName head 0 var jqTag document crea
  • 在文档准备好时触发 jQuery 更改函数

    我的更改功能允许用户从一个国家切换到另一个国家并获得不同的文本和功能 它在更改国家 地区选择时起作用 但在初始页面加载时 它不会触发 jQuery 更改来设置默认 初始国家 地区的隐藏和显示文本 div 两个 div 都会在初始页面加载时显
  • 是否有工具可以知道一个值是否具有精确的二进制表示形式作为浮点变量?

    我的 C API 有一个函数 它将作为输入double 只有 3 或 4 个值是有效输入 所有其他值都是无效输入并被拒绝 我想检查是否可以准确表示所有有效输入值 以便我可以避免 epsilon 检查以简化可读性 是否有一个工具 最好是在命令
  • Django 视图中的本地化日期 strftime

    我想从 django 视图发送 JSON 格式的本地化日期 正常文本翻译通过 ugettext is OK 以下代码在视图中没有效果 translation activate ru print datetime now strtime B
  • Python使用mechanize提交post数据

    我必须提交到服务器的网址如下所示 www mysite com manager php checkbox 5B 5D 5 checkbox 5B 5D 4 checkbox 5B 5D 57 self 19 submit Go 21 帖子数
  • IE 中的本地存储

    当我尝试从本地存储值获取项目时 它在 IE8 中返回 未定义 我使用以下代码 设置项目 var value document getElementById test value var key i x test y localStorage
  • 将其放入 TCL 正则表达式中的转义字符串

    I use Expect作为测试框架并编写一些辅助函数来简化匹配模式的键入expect命令 因此 我寻找将任何字符串转换为字符串的函数 其中所有特殊的正则表达式语法都被转义 例如 和其他字符 这样我就可以将任何字符串放入正则表达式中 而不必