You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在String#gsub的替换值中使用匹配内容并插入换行符

Ruby中gsub同时使用分组引用和换行符的解决方法

在使用String#gsub时,用双引号作为替换值可以直接插入换行符:

"my string".gsub(/\s/, "\n") # => "my\nstring"

但如果要在替换值里用正则匹配的分组内容,直接用单引号的话,没法正确解析换行符——你尝试的多种转义写法都失效,是因为单引号字符串不会解析\n这类转义序列,只会把它们当成字面字符。

这里有两种可行的解决方式:

1. 双引号配合转义的分组引用

在双引号里,分组引用需要用\\1(转义反斜杠),同时直接用\n表示换行:

"my string".gsub!(/(my )/, "\\1\n") # => "my\nstring"

2. 使用块形式的gsub

用块来处理替换逻辑时,可以直接在块内的字符串里使用$1(匹配的分组内容)和\n换行符,写法更直观:

"my string".gsub!(/(my )/) { "#{$1}\n" } # => "my\nstring"

内容的提问来源于stack exchange,提问作者fguillen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 02:15:54