gsub只在字符串的一部分

时间:2015-02-09 11:29:18

标签: ruby regex

假设我有一个字符串s,我想用"123"替换所有"abcd",但仅限前50个字符

我知道可以做到

s[0,50] = s[0,50].gsub("123", "abcd")

但有没有办法直接在s

上进行

1 个答案:

答案 0 :(得分:3)

在这种情况下,看看后面会有所帮助

正则表达式可能如下所示:

/(?<!.{50})123/
  • 背后的负面看法。确保123前面没有50个字符

Regex Demo

<强>用法

string.gsub(/(?<!.{50})123/, "abc")

<强>测试

print "1234567890123".gsub(/(?<!.{10})123/, "abc") # I was bit lazy that I                     
                                                   # checked only for 10 characters
=> abc4567890123