我想替换方括号内的所有破折号,但保留那些不是的破折号.
串: dont-change-this[only-change-inside-brackets]
结果: dont-change-this[only_change_inside_brackets]
我目前正在这样做的方法是捕获方括号中的所有内容然后替换.
regex = /(\[([a-z-]+)\])/
testString = "dont-change-this[only-change-inside-brackets]"
testString.match regex
testString.sub(regex, $1.gsub(/-/, '_'))
Run Code Online (Sandbox Code Playgroud)
它有效,但我想知道是否有办法在一个表达式中执行此操作.
您可以将sub(或gsub)与块一起使用:
my_string.sub(/\[.*?\]/){|x|x.tr('-','_')}
Run Code Online (Sandbox Code Playgroud)