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

标签 ruby regex gsub

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

“this-is-a-string”应该变成“thisIsAString”

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

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

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

最佳答案

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

使用

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

请参阅Ruby demo

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

Use Parentheses for Grouping and Capturing 中查看有关捕获组的更多详细信息正则表达式.info 部分。

关于Ruby Regexp gsub,替换第二个匹配字符的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40402486/

相关文章:

php - 正则表达式查找特定长度的数字,但可以包含除其之前或之后的数字之外的任何字符

javascript - 为什么 Javascript RegExp 有一个双对象原型(prototype)

ruby - 替换括号中的文本 gsub

ruby - MRI Ruby 和 jRuby 的性能差异

ruby-on-rails - 将视频转换为 flash 和 mp4 ruby​​ on rails?

java - 需要正则表达式来捕获Java中txt文件中的特定未知字符串

r - 如何根据R中的条件拆分字符串?

string - 在一串大小写字母的特定位置添加空格

ruby-on-rails - 将散列键转换为小写 -- Ruby 初学者

ruby - 在 Ruby 中将整数转换为十六进制字符串