Json Ruby';s gsub是否不将\n视为空白字符?

Json Ruby';s gsub是否不将\n视为空白字符?,json,ruby,gsub,Json,Ruby,Gsub,我正在尝试执行一个简单的操作——将一些输入文本转换为JSON,对其进行处理,并进一步使用它 require 'json' aws_region = "us-east-1" tag = `sudo aws ec2 describe-tags --region="#{aws_region}" -- filters "Name=resource-type,Values=instance" "Name=key,Values=Group" "Name=resource-id,Values=$(ec2

我正在尝试执行一个简单的操作——将一些输入文本转换为JSON,对其进行处理,并进一步使用它

require 'json'

aws_region = "us-east-1"

tag = `sudo aws ec2 describe-tags --region="#{aws_region}" --
filters "Name=resource-type,Values=instance" "Name=key,Values=Group" 
"Name=resource-id,Values=$(ec2metadata --instance-id)"`

puts tag

tag_json = tag.to_json.gsub(/\s+/, "")
#tag_json = tag.gsub("\n", "")

puts tag_json

obj = JSON.parse(tag_json)

desired_value = obj["Tags"][0]["Value"]

puts desired_value
我原以为上面的代码会去掉包括换行符在内的所有空白,但令我惊讶的是,输出中仍然有换行符。JSON.parse失败,出现以下错误,因为换行符仍然存在。如果上面的附加tag_json赋值未注释,它将删除换行符并成功

JSON::ParserError
-----------------
746: unexpected token at '"{\n\"Tags\": [\n{\n\"ResourceType\": 
\"instance\", \n\"ResourceId\": \"i-XXXXXX\", \n\"Value\": 
\"groupA\", \n\"Key\": \"Group\"\n}\n]\n}\n"'

最后,我不得不为新词另设一个案例。为什么gsub将换行符视为非空白字符?是否有其他表达式可以组合所有空格、制表符和换行符,以便我可以将它们去掉?

可能是编码问题。请尝试
tag\u json=tag.to\u json.gsub(/[\s\p{]/,“”)

表达式中不需要
+
,因为
gsub
会删除所有出现的单个字符


考虑一下
“aaaaa”.gsub(/a/,'')#=>“

标签中具体是什么?
tag\u json
最终是什么?你确定你在使用
标签json
gsub(/\s+/,'')
应该删除换行符,这样您就不会向我们展示正在发生的事情,一个简单的例子对每个人都有用。顺便说一句,换行符(或其他空格)没有什么错在JSON.Tag中,您可以看到,但以前是纯文本形式。我将在原始文章中添加一个更完整的示例。用完整的上下文更新原始文章。正如您所看到的,它没有太大的不同。
gsub(/\s+/,“”)
将替换换行符。也许您有文字
\n
(两个字符)而不是实际的
\n
(单个字符)?(单击“显示不可见物”)这对我有效,因此我怀疑是编码问题造成的。我是从厨师烹饪书上运行的,这似乎是类似的。