如何使用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方面的帮助。