Ruby 正则表达式 gsub,替换第二个匹配字符的实例

Ruby Regexp gsub, replace instances of second matching character

我想用大写字母替换字符串中连字符后的第一个字母。

"this-is-a-string" 应该变成 "thisIsAString"

"this-is-a-string".gsub( /[-]\w/, ''.upcase ) 

我希望 \1 会重新插入我的第二个字符匹配 \w 并且我可以将它大写。

如何使用 \0 \1 等选项?

您需要捕获 \w 才能引用子匹配项。

使用

"this-is-a-string".gsub(/-(\w)/) {$~[1].upcase}
# => thisIsAString

Ruby demo

请注意,{$~[1].upcase} 块内的 $~[1] 实际上是使用 (\w) 捕获的文本,$~ 是使用 gsub 实例化的匹配数据对象,并且[1] 是用一对未转义的括号定义的第一个组的索引。

在 regular-expressions.info.

Use Parentheses for Grouping and Capturing 部分中查看有关 捕获组 的更多详细信息