Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ruby从结果数组中删除{}和\“_Ruby_Regex - Fatal编程技术网

如何使用ruby从结果数组中删除{}和\“

如何使用ruby从结果数组中删除{}和\“,ruby,regex,Ruby,Regex,我有一个文本字符串,如下所示: my_string = 'The {"apples" >> "apple"} {"do" >> "does"} not fall far from {+"the "}tree{"?" >> "!"}' my_content = eval my_content.to_s.gsub('\"','') my_content = eval my_contents.to_s.gsub('{','') my_content = eval

我有一个文本字符串,如下所示:

my_string = 'The {"apples" >> "apple"} {"do" >> "does"} not fall far from {+"the "}tree{"?" >> "!"}'
my_content = eval my_content.to_s.gsub('\"','')
my_content = eval my_contents.to_s.gsub('{','')
my_content = eval my_content.to_s.gsub('}','')
我使用以下方法将大括号{}之间的所有内容提取到一个数组中:

my_content = my_string.scan(/\{.*?\}/)
结果是:

["{\"apples\" >> \"apple\"}",
 "{\"do\" >> \"does\"}",
 "{+\"the \"}",
 "{\"?\" >> \"!\"}"]
我希望内容如下:

["apples >> apple", "do >> does", "+the ", "? >> !"]
我的做法非常糟糕,如下所示:

my_string = 'The {"apples" >> "apple"} {"do" >> "does"} not fall far from {+"the "}tree{"?" >> "!"}'
my_content = eval my_content.to_s.gsub('\"','')
my_content = eval my_contents.to_s.gsub('{','')
my_content = eval my_content.to_s.gsub('}','')

如何删除我不想正确包含的元素?

您可以尝试这样做:它将包含每个{}

/{(.[^}]*)}/g
^}-确保它不会在模式中接受“}”作为匹配项,并确保最后一个“}”以大括号结束

这样,您就可以获得所有实例,否则使用正则表达式,它会将所有结束}作为内部匹配,并仅在最后一个}处停止

▶ my_string.scan(/(?<={).*?(?=})/).map { |s| s.delete '"' } 
#⇒ ["apples >> apple", "do >> does", "+the ", "? >> !"]

在我们使用的第一步中,在第二步中,去掉了双引号。

你读过这个问题吗?你试过正则表达式吗?@mudasobwa你有没有看到这个人反复编辑过这个问题?在第一个答案中,用户提出了修改过的问题?在这种情况下,你会怎么做,继续回答我ng?当第二个问题出现时,你可能不在办公桌上?如果有人在第二个问题上否决你,你会有什么感觉?哦,请原谅。坦率地说,我仍然无法习惯这种“给出答案后编辑”另外,请编辑一下答案,这样我就可以收回否决票了。这正是我想要的。同时也感谢regex方面的帮助。