Ruby gsub!与正则表达式保持联系

Eli*_*off 1 ruby regex

我想将一个字符串行"variable.to_s"转换为"str(variable)"使用gsub!正则表达式.我现在有

string = "variable.to_s"
string.gsub!(/\w+\.to_s/,/str(\w)/)
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,因为你不能在gsub的第二部分使用正则表达式,但是我如何保留\wgsub部分中的发现但更换.to_s部分?

tad*_*man 5

你捕到了错误的东西:

string.gsub!(/(\w+)\.to_s/, 'str(\1)')
Run Code Online (Sandbox Code Playgroud)

gsub并将gsub!字符串或正则表达式作为第一个参数,将字符串或块作为第二个参数.你正在向两者发送正则表达式.

如果您需要在第二部分中使用匹配的一部分,请使用括号捕获它.你无意中在你的代码中做了这个,但是在错误的一面.