Perl 正则表达式从哈希替换

2023-12-28

有没有一种有效的方法可以使用 Perl 散列中的值替换一堆字符串?

例如,

$regex{foo} = "bar";
$regex{hello} = "world";
$regex{python} = "perl";

open(F, "myfile.txt");
while (<F>) {
      foreach $key (keys %regex) {
            s/$key/$regex{$key}/g;
      }
}
close(F);

有没有办法在 Perl 中完成上述任务?


第一个问题:你确定你拥有的是效率低下?

其次,最明显的下一步是将所有内容放入一个正则表达式中:

my $check = join '|', keys %regex;

然后你可以进行替换:

s/($check)/$regex{$1}/g;

如果键有足够的重叠,正则表达式引擎必须不断地重新检查相同的字母,这仍然可能是“慢”的。你可以使用类似的东西正则表达式::优化器 http://search.cpan.org/perldoc?Regexp%3a%3aOptimizer以消除重叠。但是优化的成本可能比只做所有事情的成本更高,具体取决于有多少更改(散列中的键/值)以及您要修改的行数。过早的优化——!

当然,请注意,您的示例代码在替换后不会对文本执行任何操作。它不会就地修改文件,所以我假设您正在单独处理该文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Perl 正则表达式从哈希替换 的相关文章

  • Java正则表达式:为什么数字[0-9]、逗号等不是unicode?

    class Test public static void main String args String regex p L System out println 0 matches regex 上面的代码打印 false 但我期待 tr
  • 客户端浏览器关闭时服务器端 Perl CGI 脚本中断

    我已经尝试解决一个小问题很长一段时间了 但似乎我无法解决 我编写了一个 HTML 页面 它在提交表单时调用 perl CGI 脚本 该 CGI 在服务器端执行一定数量的任务 我让脚本将这些任务的步骤打印到 HTML 页面上的 iframe
  • 正则表达式 数字字符串 数字字符串循环

    我的字符串是 str Move 10 Casio Watch 20 Apple Iphone 100 Apple Macbook to store 我用过了 preg match all 0 9 str matches 但它只匹配产品名称的
  • 使用正则表达式模式查找 -name 并使用 cp 替换文件名

    目前我正在使用该命令cron复制 data从源到目标路径 find source path name data exec cp target path 源码结构为 source path category1 001 data source
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • 反向引用在 PHP 中不起作用

    最近我一直在研究 更多的是在实践中说实话 正则表达式 我注意到他的力量 我提出的这个要求 link https stackoverflow com questions 30380397 take the text up to a speci
  • 正则表达式获取包含某些字符但不包含其他字符的单词

    我想要的是一个正则表达式 它可以获取包含例如字符的单词a并且不包含字符b and c 在我看来 以下内容完成了一半的工作 bc 但我想要言语 并含有a这里不考虑 使用消极的前瞻性 确保我们要捕获的单词没有b nor c 然后 匹配该单词是否
  • 如何让 Vim 突出显示非 ascii 字符?

    我试图让 Vim 突出显示非 ASCII 字符 是否有可用的设置 正则表达式搜索模式或插件来执行此操作 在 a 中使用范围 搜索中的字符类 您应该能够excludeASCII 十六进制字符范围 因此突出显示 假设您有hlsearch启用 所
  • 正则表达式可以与 C++ 中的字符数组一起使用吗

    我正在开发一个无法使用字符串库文件的程序 而是使用字符数组 我能够使用正则表达式 并且想知道是否有办法使用正则表达式和字符数组 甚至正则表达式和单个字符 我问的原因是当我尝试在匹配中使用我的 char 数组时 xUtility 会抛出一堆来
  • Perl regex:如何知道匹配数

    我循环遍历一系列正则表达式并将其与文件中的行进行匹配 如下所示 for my regex regexs ref LINE for rawfile regex do do something here next LINE 有没有办法让我知道我
  • 当找到匹配时使用 sed 替换行首

    我有一个 Java 文件 我想注释包含匹配的任何代码行 myvar 我认为 sed 应该在这里帮助我 sed s myVar not sure what to put here g MyFile java 我不知道要输入什么 not sur
  • 如何忽略 perl 中的“证书验证失败”错误?

    我想访问一个无法验证证书的网站 我正在使用 WWW Mechanize 获取请求 那么如何忽略这一点并继续连接到该网站呢 use IO Socket SSL qw use WWW Mechanize qw my mech WWW Mecha
  • 使用 Visual Studio Code 调试 Perl

    我今天刚开始使用 Perl 并安装了活动Perl https en wikipedia org wiki ActivePerl5 24 1 一切都很顺利 我能够创建我的测试程序testPerl pl与简单的print命令并运行它consol
  • Unicode、正则表达式和 PyPy

    我写了一个程序来添加 有限 统一码支持 https stackoverflow com q 1832893 520779到 Python 正则表达式 虽然它在 CPython 2 5 2 上工作正常 但在 PyPy 上不起作用 1 5 0
  • 如何在 Perl 字符串中手动插入字符串转义符?

    在perl中假设我有一个像这样的字符串 hello tworld n 而我想要的是 hello world 也就是说 hello 然后是文字制表符 然后是 world 然后是文字换行符 或者等价地 hello tworld n 注意双引号
  • [\b] 退格正则表达式有什么用?

    b 显然匹配退格字符 我无法理解字符串如何包含退格字符 有人能给我一个具体的例子来说明如何使用它吗 非常感谢 虽然所有其他人总体上都是正确的 即 b是单词边界 b does表示字符类中的退格键 b 这确实会匹配退格字符 它只是一个可以出现在
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • Python正则表达式检查字符串是否包含任何单词

    我想搜索一个字符串并查看它是否包含以下任何单词 AB AG AS Ltd KB University 我在 javascript 中工作 var str Hello test AB var forbiddenwords new RegExp
  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • 匹配没有周围字符列表的单词列表

    我有这个正则表达式 one common word or another 除非这两个单词相邻 否则它匹配得很好 One one s more word word common word or another word more anothe

随机推荐

  • 如何在其他工作表的应用程序脚本中请求或获得谷歌电子表格访问权限?

    我正在为我的自定义函数编写 A 电子表格的应用程序脚本 并尝试使用从那里获取 B 电子表格中的值openUrl 然而 我得到了ERROR当我使用自定义函数时在电子表格中 在谷歌文档中 它说 如果您的自定义函数抛出错误消息 You do no
  • 使用powershell在其他域上查找“网络用户”?

    我想做的是 net user user1 DOMAIN 但是 我想为计算机未加入但可以访问的域执行此操作 用户分布在 DOMAIN1 和 DOMAIN2 中 我运行它的计算机已加入 DOMAIN1 但会在 DOMAIN2 上查找用户 这可以
  • 在 mongodb 的嵌套数组中插入数据[重复]

    这个问题在这里已经有答案了 可能的重复 MongoDB 更新嵌套数组中的字段 https stackoverflow com questions 9611833 mongodb updating fields in nested array
  • Safari 中的垂直居中

    我在 Safari 中使用 margin auto 0 时遇到垂直居中问题 在嵌套在带有 display inline flex 的 div 内的 div 上 它在 Firefox Chrome Opera 中工作得很好 但在 Safari
  • Travis CI 失败,因为无法接受许可证约束布局

    在我写这个问题之前 我已经搜索过同样的问题 他们确实有导出许可证 因为仍然使用 alpha 版本的约束布局 但现在android已经发布了约束布局的稳定版本 我尝试了很多设置但仍然失败 我最新的 travis yml language an
  • Django - 显示图像字段

    我刚刚开始使用 Django 还没有找到很多关于如何显示的信息imageField 所以我做了这个 模型 py class Car models Model name models CharField max length 255 pric
  • 如何判断闭合路径是否包含给定点?

    在 Android 中 我有一个 Path 对象 我碰巧知道它定义了一条闭合路径 并且我需要弄清楚给定点是否包含在路径中 我所希望的是类似的东西 路径 contains int x int y 但这似乎不存在 我寻找这个的具体原因是因为我在
  • 如何使用 signalr 将 json 对象发送到 .net 服务器

    我正在开发一个 Angular 应用程序 我必须使用 netcore 服务器和 signalR 将数据从角度形式发送到外部服务器 我可以使用信号集线器在 Angular 客户端和控制器之间建立连接 但我很困惑如何将 json 对象从客户端发
  • 在 bash 中选择不同的可执行文件

    当我想跑步的时候make为了生成一些可执行文件 它总是使用 Sunmake位于 在 usr local bin make而不是 GNU make 可以在以下位置找到 usr sfw bin gmake 我如何告诉操作系统使用 GNU mak
  • TkInter:了解解除绑定功能

    TkInter 是否unbind http effbot org tkinterbook widget htm Tkinter Widget unbind method函数阻止应用它的小部件将更多事件绑定到小部件 澄清 假设我在程序的早期将
  • Python 中以下代码有什么问题?

    我试图对一个字段实施约束 但它不会导致约束验证 而是允许保存记录而不显示任何约束消息 def check contact number self cr uid ids context None for rec in self browse
  • 在 AOSP Android 6.0 上更新 WebView

    我正在开发基于 AOSP Android 6 0 Marshmallow 的设备 我想将标准 Android webview 更新到最新版本以使用最新的 JavaScript 为此我更换了external chromium webview
  • 使 JButton 在 JTable 内可单击

    这是我想做的事情的屏幕截图 发生的情况是 JButton 显示正确 但当我单击它时没有任何反应 经过一番搜索 我发现Object由返回table getValueAt 是一个字符串而不是 JButton 这是代码 tblResult new
  • 是否有“纯粹适用的任一”的标准名称或实现?

    我经常发现我所谓的 纯粹应用性 的用处Either i e Either与Applicative只要我们不实现一个实例就可用Monad实例也是如此 newtype AEither e a AEither unAEither Either e
  • 使用可变批量大小加载数据?

    我目前正在研究基于补丁的超分辨率 大多数论文将图像分割成更小的补丁 然后使用这些补丁作为模型的输入 我能够使用自定义数据加载器创建补丁 代码如下 import torch utils data as data from torchvisio
  • 基于列合并数据框,仅保留第一个匹配项

    我有 2 个如下所示的数据框 df 1 Index Fruit 1 Apple 2 Banana 3 Peach df 2 Fruit Taste Apple Tasty Banana Tasty Banana Rotten Peach R
  • 防止违反 PCI 标准暴露敏感数据 - response.getWriter().write(xml.toString())

    我正在根据代码审计报告修复代码 它针对具有语法的行显示 防止敏感数据的暴露 response getWriter write xml toString 整个代码如下 String alertId request getParameter a
  • 我可以不映射/平面映射一个OptionalInt吗?

    为什么好像没有map flatMap OptionalInt 或其他原始可选风格的方法 The stream 映射操作允许对象和基元之间的转换 但为什么Optional不利用这一点呢 OptionalInt profileId Option
  • 何时在 JavaScript 中对对象使用 const?

    我最近读到了有关 ES6 的文章const关键字 当有这样的东西时我可以理解它的重要性 function const PI 3 14 PI 3 15 Uncaught TypeError Assignment to constant var
  • Perl 正则表达式从哈希替换

    有没有一种有效的方法可以使用 Perl 散列中的值替换一堆字符串 例如 regex foo bar regex hello world regex python perl open F myfile txt while