搜索并替换为 ruby​​ 正则表达式

2023-12-26

我的 MySQL 列中有一个包含 HTML 的文本 blob 字段。我必须更改一些标记,所以我想我会在 ruby​​ 脚本中完成它。 Ruby 在这里无关紧要,但很高兴看到它的答案。标记如下所示:

<h5>foo</h5>
  <table>
    <tbody>
    </tbody>
  </table>

<h5>bar</h5>
  <table>
    <tbody>
    </tbody>
  </table>

<h5>meow</h5>
  <table>
    <tbody>
    </tbody>
  </table>

我只需要改变第一个<h5>foo</h5>每个文本块<h2>something_else</h2>同时留下绳子的其余部分。

使用 Ruby 似乎无法获得正确的 PCRE 正则表达式。


# The regex literal syntax using %r{...} allows / in your regex without escaping
new_str = my_str.sub( %r{<h5>[^<]+</h5>}, '<h2>something_else</h2>' )

Using String#sub代替String#gsub仅导致第一次替换发生。如果您需要动态选择“foo”是什么,可以在正则表达式文字中使用字符串插值:

new_str = my_str.sub( %r{<h5>#{searchstr}</h5>}, "<h2>#{replacestr}</h2>" )

话又说回来,如果您知道“foo”是什么,则不需要正则表达式:

new_str = my_str.sub( "<h5>searchstr</h5>", "<h2>#{replacestr}</h2>" )

or even:

my_str[ "<h5>searchstr</h5>" ] = "<h2>#{replacestr}</h2>"

如果需要运行代码来找出替换,可以使用 sub 的块形式:

new_str = my_str.sub %r{<h5>([^<]+)</h5>} do |full_match|
  # The expression returned from this block will be used as the replacement string
  # $1 will be the matched content between the h5 tags.
  "<h2>#{replacestr}</h2>"
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搜索并替换为 ruby​​ 正则表达式 的相关文章

随机推荐

  • 如何在 azure 函数中访问 http 请求的所有字段(在 C# 中解析 JSON)?

    microsoft azure 对我来说是一个全新的编程主题 编程基础语言是C 我必须使用逻辑应用程序中的 Azure Funtion Http 触发器 当新电子邮件到达时 我将日志应用程序中收到的电子邮件中的所有可能数据提供给 到天蓝色的
  • Kubernetes 持久卷访问模式:ReadWriteOnce、ReadOnlyMany 和 ReadWriteMany

    据这位官员介绍document https kubernetes io docs concepts storage persistent volumes access modes Kubernetes持久卷支持三种类型的访问模式 只读很多
  • 在 Pandas 中使用 ELIF 创建列

    Question 我无法弄清楚如何根据其他两列中的值创建新的 DataFrame 列 我需要使用 if elif else 逻辑 但我找到的所有文档和示例都只显示 if else 逻辑 这是我正在尝试做的事情的示例 Code df comb
  • TSQL - 选择插入的行

    有没有办法选择插入的行 我正在尝试使用运行以下查询SqlCommand 它用于在数据库中保留给定的id INSERT INTO tbl id SELECT COUNT 1 AS id from tbl 有没有办法返回插入的 id 列 以便我
  • 需要 sigsuspend 的解释

    我需要对 sigsuspend 主题进行澄清 我有一个简化的例子 sigset t mask oldmask sigemptyset mask sigaddset mask SIGRTMIN 1 sigprocmask SIG BLOCK
  • 如何恢复/重新创建 mysql 的默认“mysql”数据库

    当我安装mysql时 它附带了两个数据库 mysql和信息模式 我不小心删除了mysql数据库 有什么办法可以重新创建它吗 另外 由于它包含一个包含用户信息的表 是否有什么方法可以在没有它的情况下查看用户信息 如果您仍然能够登录 我假设您不
  • Facebook API 错误子代码 33

    我有一个应用程序可以获取leads当潜在客户填写表单时 在 webhook 请求后来自 facebook 某些页面抛出此错误 error message Unsupported get request Object with ID 2333
  • 通过react获取cookie

    我需要知道我的用户是否已连接 为此 我想读取我在服务器端使用express session设置的cookie app use session secret crypted key resave false saveUninitialized
  • 为什么用分号连接多个 MySQL 查询不能与 Perl DBI 一起使用?

    我想使用将值插入到两个单独的 MySQL 表中DBI https metacpan org pod DBI 我尝试将两个工作结合起来INSERT通过插入一个来查询 它们之间 dbh gt do q INSERT INTO testA tes
  • 在 docker 中运行 npm update,而不使用该特定更新的缓存

    背景 我正在编写代码node js using npm and docker 我试图让我的 docker 文件在构建时使用缓存 这样就不会花费太长时间 我们有一个 通用 存储库 用于保存在各种存储库中使用的逻辑 并且通过 npm 包进行传播
  • 使用 OpenMP 并行化 while 循环

    我有一个非常大的数据文件 这个数据文件中的每条记录有4行 我编写了一个非常简单的 C 程序来分析这种类型的文件并打印出一些有用的信息 该程序的基本思想是这样的 int main char buffer BUFFER SIZE while f
  • JPA onetoMany/ManytoOne 持续存在 - 违反完整性约束 - 找不到父键

    我的映射文件 相关数据 Parent Entity Table name ATTRIBUTE NAME uniqueConstraints UniqueConstraint columnNames NAME TEXT SequenceGen
  • 使用 Laravel Passport oauth/token 发送更多数据

    所以 我正在使用 Laravel Passport 到目前为止一切正常 但是 我想对护照代码进行一些小的更改 好吧 我希望不在供应商文件夹中 一旦我会要求用户更改其密码 以防他正在进行第一次登录 所以 我需要的是两件事 我相信 1 如何在
  • mysql 查询优化

    我的 x 表中有大约 总共 1 049 906 个 查询花费了 0 0005 秒 如果我只是检索尝试检索特定字段记录 花了不到6分钟 这是我的查询 SELECT CUSTOMER CODE FROM X TBL 客户代码 gt 唯一 上述查
  • 如何配置 Express 响应对象以自动向 JSON 添加属性?

    我有一个对象 var obj stuff stuff 在 Express 中 我将其发送给客户端 如下所示 res json obj 有没有办法配置响应对象自动将属性添加到它生成的 json 中 例如 输出 status ok data s
  • PHP 无需 cURL 即可获取 http 标头响应代码

    我编写了一个类来检测 cURL 是否可用 如果可用 则使用 cURL 执行 GET POST DELETE 在我使用的 cURL 版本中curl getinfo curl CURLINFO HTTP CODE 获取 HTTP 代码 如果 c
  • 监控传出互联网流量

    有没有办法以编程方式监控互联网流量 我想记录用户在互联网上访问的页面 这可以通过 NET 代码实现吗 是否有可用于检索数据的第 3 方 NET 组件 有关互联网流量的信息必须存储到数据库中 因此我无法使用 IE 的插件或其他东西 我们还希望
  • Python 3:从元组列表中删除空元组

    我有一个元组列表 内容如下 gt gt gt myList c e ca ea d do dog ear eat cat car dogs cars done eats cats ears don 我希望它是这样读的 gt gt gt my
  • 标准输出未正确传递?

    特殊的问题 由于某种原因 标准输出中的值无法被正确识别 我想做的是 grep 正在侦听的端口的值并尝试匹配 如果定义的端口存在 即 被监听产生一条消息 如果不存在 则产生另一条消息 name check prometheus status
  • 搜索并替换为 ruby​​ 正则表达式

    我的 MySQL 列中有一个包含 HTML 的文本 blob 字段 我必须更改一些标记 所以我想我会在 ruby 脚本中完成它 Ruby 在这里无关紧要 但很高兴看到它的答案 标记如下所示 h5 foo h5 table tbody tbo