将其放入 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 正则表达式中的转义字符串 的相关文章

  • XML 文档中需要转义哪些字符?

    XML 文档中必须转义哪些字符 或者在哪里可以找到这样的列表 如果您使用适当的类或库 他们将为您进行转义 许多 XML 问题都是由字符串连接引起的 XML 转义字符 只有五个 quot apos lt lt gt gt amp 转义字符取决
  • 转义字符串以在 XML 中使用

    我正在使用Python的xml dom minidom创建 XML 文档 逻辑结构 gt XML 字符串 而不是相反 如何让它转义我提供的字符串 这样它们就不会弄乱 XML 像这样的东西吗 gt gt gt from xml sax sax
  • 在 PHP 中使用单引号(转义)

    我正在 PHP 标签内编写 HTML 代码 已经编写了锚标记样式 如果我更改某些部分将会影响 所以我试图在跨度 onclick 事件中编写我的代码 这是我的代码 div span array1 i name span div 如果单击该数组
  • 如何逃避 os.system() 调用?

    使用 os system 时 通常需要转义文件名和其他作为参数传递给命令的参数 我怎样才能做到这一点 最好是可以在多个操作系统 shell 上运行的东西 尤其是 bash 我目前正在执行以下操作 但我确信必须有一个库函数可以实现此目的 或者
  • 将字符串转义为 sed 替换模式

    在我的 bash 脚本中 我有一个外部 从用户接收的 字符串 我应该在 sed 模式中使用它 REPLACE
  • \ 对非转义字符有何作用?

    I 又问了一个不好的问题 https stackoverflow com questions 4380386 fix escape javascript escape character所以我会问别的事情 根据http www c poin
  • Java 中的转义双引号[重复]

    这个问题在这里已经有答案了 可能的重复 在Java中 有没有一种方法可以编写字符串文字而不必转义引号 https stackoverflow com questions 3034186 in java is there a way to w
  • 从输入字段读取属性时 HTML 编码丢失

    我使用 JavaScript 从隐藏字段中提取一个值并将其显示在文本框中 隐藏字段中的值被编码 例如
  • 如何让proc更有效?

    有一个顶点集合 x1 y1 x2 y2 xn yn 我想改变这些坐标的中心 所以我尝试 proc changeCenter vertices X Y set myList list foreach element vertices lapp
  • 在 bash 脚本中期望

    我正在尝试将 Expect 脚本实现到 bash 脚本中 请耐心等待 因为我对 bash expect 还很陌生 这是按预期工作的期望脚本 log user 0 file delete foo txt set fh open foo txt
  • 如何在保存到数据库之前在JSP中转义html?

    我现在正在学习 JSP 和 Java 并写了一个 非常 简单的留言簿来开始使用 JSP 但我想确保没有人可以使用 CSS 因此我需要在将 HTML 代码保存到 mySQL 数据库之前删除它 我已经在这里搜索并找到了 PreparedStat
  • 什么是\? (反斜杠问号)转义序列是什么意思?

    我正在用 Objective C 编写正则表达式 转义序列 w是非法的并发出警告 因此正则表达式 w 必须写成 w 转义序列 is 显然 有效 http cupsofcocoa com 2010 09 14 escape sequences
  • 如何在传递给命令行参数时转义 Bash 中的变量

    我有一个 Bash 脚本 Cygwin 它使用一些带有空格的 Windows 路径 因此 我逃离了这个空间 在我的变量定义中 脚本中的所有内容都运行良好 但是 我需要将此变量作为参数传递给命令行可执行文件 当我这样做时 我的逃跑就会变得一团
  • 将 csv 数据写入命名空间内的矩阵时,TCL 抛出无效命令名称

    这是一个奇怪的问题 我似乎无法弄清楚 我正在使用 TCL 8 5 我正在尝试使用以下命令将数据从 CSV 文件读取到矩阵中csv read2matrix命令 然而 每次我这样做时 它都会说我试图写入的矩阵是无效命令 我正在做的事情的片段 p
  • 创建新的 Expect 对象时,cgi-perl 文件中出现 Apache [PTY 错误]

    我有一个 perl 脚本 usr bin perl w use DateTime use Expect use IO Pty use CGI Fast while q new CGI Fast my ip q gt param ip my
  • 在 bash 中使用 ssh 内的 Expect 执行 sudo

    我想创建一个脚本来自动在多个 Linux 主机上进行安装 我使用 ssh 密钥登录到主机 在登录中我想做一个 sudo 我正在尝试使用 Expect 我在站上有它 但是我的服务器上没有运行脚本 我该怎么做 这是我的尝试 但没有运气 bin
  • 如何在节点中转义 shell 命令的字符串?

    In nodejs http nodejs org 执行外部命令的唯一方法是通过 sys exec cmd 我想调用外部命令并通过标准输入为其提供数据 在nodejs中 似乎还没有一种方法可以打开命令 然后将数据推送到它 仅执行并接收其标准
  • 为什么 XSS 注入需要对 & 进行转义

    OWASP 建议转义以防止 XSS 注入的五个字符是 lt gt 其中 我无法理解为什么 符号 应该被转义以及如何将其用作注入脚本的向量 有人可以举个例子 所有其他四个字符都被转义 但与号没有转义 所以会有 XSS 注入漏洞 我已经检查了另
  • 如何在 PHP 中替换/转义 U+2028 或 U+2029 字符以阻止我的 JSONP API 崩溃

    好的 我正在运行一个公共 JSONP API 数据由我的 PHP 服务器提供 我刚刚读了这篇文章 JSON 不是的 JavaScript 子集 作者 Magnus Holm 2011 年 5 月 http timelessrepo com
  • 在 Eclipse 中的调试会话期间记录所有跟踪信息

    我想记录调试会话的每个步骤的所有调试信息 以便稍后处理所有这些数据 例如调用的方法的名称 参数值 所有变量值等 有没有任何选项可以实现此目的 我应该在哪里更改代码才能实现此目的 一件重要的事情 它不是一个 java 程序 这是一个使用 ac

随机推荐

  • 测试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命令 因此 我寻找将任何字符串转换为字符串的函数 其中所有特殊的正则表达式语法都被转义 例如 和其他字符 这样我就可以将任何字符串放入正则表达式中 而不必