Ruby:替换捕获的字符串部分的优雅方式

标签 ruby regex

我想做一个字符串替换,如果我在两个术语之间找到一个字符串,我会替换它,所以当我有一个字符串时:

"123 pre 456 post"

我可以得到:

"123 pre 789 post"

我可以通过做类似的事情来做到这一点:

string.sub(/(pre\s+)\S+(\s+post)/, "\\1789\\2")

但是,我想尽可能避免使用这两个捕获。事实上,我想改用这样的正则表达式:/pre\s+(\S+)\s+post/ 并获取捕获的范围,然后替换它。有没有办法做到这一点(使用标准的 Ruby 库)?

最佳答案

你可以这样做:

"123 pre 456 post".sub(/(?<=pre)\s+\S+\s+(?=post)/, ' 789 ')

关于Ruby:替换捕获的字符串部分的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970371/

相关文章:

ruby-on-rails - 在 RVM 下使用 Ruby 1.9.2 运行 Rails 时出错

json - 使用 JSON.parse 解析 OpenStruct 或哈希

Ruby:如何计算二维平面中两点之间的距离?

mysql - 使用正则表达式将一列拆分为多列

ruby-on-rails - 循环遍历拥有 rails 用户的 Teams

javascript - 如何使用正则表达式根据表达式中的多个字符拆分 str?

php - 正则表达式在字符串中查找PHP变量

java - 检查字符串字符,如果不匹配则替换

c#正则表达式查找并提取给定长度的数字

ruby-on-rails - 如何配置 config.yml 以便我可以安装 devkit?