gpt4 book ai didi

ruby - 替换 ruby 中括号之间的特定字符

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:04 26 4
gpt4 key购买 nike

我有一个字符串

str = "'${1:textbox}',[${2:x},${3:y},${4:w},${5:h}]"

我想用一个空格替换 [] 之间的所有 ,

我尝试过使用类似的东西

str.gsub!(/(?<=\[)\,*?(?=\])/," ")

没有成功。但是,如果我将表达式中的 \, 替换为 .,我会得到预期的输出:

str.gsub!(/(?<=\[).*?(?=\])/," ")

== "'${1:textbox}',[ ]"

谁能解释一下在这种情况下使用的正确正则表达式技术,也许还可以解释为什么我上面发布的示例失败和成功?

我正在使用 ruby 1.9.3p194(2012-04-20 修订版 35410)[x86_64-darwin10.8.0]

最佳答案

也许可以用一个正则表达式来做到这一点,但即使是这样,我也可以保证它会丑得无法形容。使用“嵌套”替换要简单得多 - 使用一个 gsub 查找括号内的子字符串,然后使用另一个替换逗号:

str.gsub(/\[.*?\]/) do |substr|
substr.gsub(',', ' ')
end

恐怕我无法解释为什么您的尝试失败了 - 它们都不会为我运行(ruby 1.8.7/irb 0.9.5)。 IRB 给出的错误含糊地说“Bad regexp syntax”。而且我不太明白它们应该如何工作(编辑:mu 太短了,在 his answer 中有一个很棒的故障 - 检查一下)。无论如何,希望这对您有所帮助!

关于ruby - 替换 ruby 中括号之间的特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12325368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com