Ruby on rails 如何更新字符串中与某些regexp匹配的部分

Ruby on rails 如何更新字符串中与某些regexp匹配的部分,ruby-on-rails,ruby,regex,string,Ruby On Rails,Ruby,Regex,String,我有字符串“(1,2,3,4,5,6)、(1,2,3)”我想把它改成”('1'、'2'、'3'、'4'、'5'、'6')、('1'、'2'、'3')”-用、'1'、'2'、'code>等替换所有与/([^、)(“])//code>匹配的部分 "(1,2,3,4,5,6),(1,2,3)".gsub(/([^,)("]\w*)/,"'\\1'") gsub是中的“全局替换”方法。它查找给定正则表达式的所有出现的并将其替换为作为第二个参数给出的字符串(与仅替换第一个出现的sub相反)。该字符串可以

我有字符串
“(1,2,3,4,5,6)、(1,2,3)”
我想把它改成
”('1'、'2'、'3'、'4'、'5'、'6')、('1'、'2'、'3')”
-用
、'1'、'2'、'code>等替换所有与
/([^、)(“])//code>匹配的部分

"(1,2,3,4,5,6),(1,2,3)".gsub(/([^,)("]\w*)/,"'\\1'")
gsub
是中的“全局替换”方法。它查找给定正则表达式的所有出现的并将其替换为作为第二个参数给出的字符串(与仅替换第一个出现的
sub
相反)。该字符串可以包含对标记为
()
在regexp中。第一组是\1,第二组是\2,依此类推。

试试看

mystring.gsub(/([\w.]+)/, '\'\1\'')

这会将数字(整数/浮点数)和单词替换为“引号包围”的自身,而不使用标点符号(点除外)。

更新:我想您想搜索这个

(([^,)("])+)
换成这个

'$1'

查找任何内容1次或多次,并将其分配给$1变量槽,因为在“\d”周围使用了括号。替换部分将使用找到的内容作为替换值。

为什么不用撇号中的数字替换数字?因为除了数字(浮点数、字符串)之外,还可以有任何内容这将起作用,但您需要在集合后添加“+”以获取字符串、浮点数等。空白也可能会变得棘手。我在regexp中犯了一个错误,对于更复杂的字符串,它应该是([^,)(“]\w*)。谢谢你的回答,你能解释一下吗?我加了一个解释并改变了答案regexp@BohdanPohorilets等等,这会把“3.3”作为一个完整的“3.3”,而不是“3”和“.3”?当我测试它时,它也会用空格和制表符分隔字符串。