Ruby Regexp gsub,替换第二个匹配字符的实例

时间:2016-11-03 13:16:11

标签: ruby regex gsub

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

"这-is-a的字符串"应该成为" thisIsAString"

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

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

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

1 个答案:

答案 0 :(得分:3)

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

使用

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

请参阅Ruby demo

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

在regular-expressions.info的Use Parentheses for Grouping and Capturing部分中查看有关捕获群组的详细信息。