Arrays 如何在ruby中提取括号之间的数据?
我有上面指定格式的数据。我想提取方括号中的数据并将其存储到数组中。我使用过这个代码,但它似乎不起作用Arrays 如何在ruby中提取括号之间的数据?,arrays,ruby,Arrays,Ruby,我有上面指定格式的数据。我想提取方括号中的数据并将其存储到数组中。我使用过这个代码,但它似乎不起作用 productRankingOct12: [ "LessPopularityEPC" "CtrEpcJob" "DeviceSpecificLPE" ] File.open(输入_文件,“r”)do | f |#f=文件描述符 f、 每行 放置行。扫描(/[([^]*)]/) 结束 结束 您的正则表达式似乎不对。试着使用一个在线工具来检查你的正则表达式 我想这个正则表达式可能适合你的需要
productRankingOct12: [
"LessPopularityEPC"
"CtrEpcJob"
"DeviceSpecificLPE"
]
File.open(输入_文件,“r”)do | f |#f=文件描述符
f、 每行
放置行。扫描(/[([^]*)]/)
结束
结束
您的正则表达式似乎不对。试着使用一个在线工具来检查你的正则表达式
我想这个正则表达式可能适合你的需要
File.open(input_file, "r") do |f| #f=file descriptor
f.each_line do |line|
puts line.scan(/[([^<>]*)]/)
end
end
如果你看一看这个例子,它有一个解释,我在下面解释:
- \按字面意思“匹配角色”
- 在第一个捕获组中([^”]*)
- [^”]*在零次和无限次之间,尽可能多地匹配一个非对话标记的字符,并根据需要进行回馈(贪婪)
- \按字面意思“匹配角色”
您可能还应该将所有文本读入一个字符串,然后在该字符串上运行扫描,以便获得所有内容的数组,而不仅仅是每一行。让我们首先创建一个包含示例中内容的文件:
\"([^";]*)\"
text=这是确切的格式吗?这些字符串之间没有逗号?为什么不更改文件?你离YAML不远Hiii我已经从数据中删除了逗号,因为我不需要这些。。。谢谢你的回答。它对我有用。。你能告诉我,如果我想把所有的值放在同一个索引上,那么我该怎么做?另外,我想把这个值映射到productRanking12..Chints,对不起,但我不知道你所说的“…把所有的值放在同一个索引上[什么索引?]”或者“…把这个[什么是“这个”?]值映射到productRanking12[productRanking12是什么类型的对象,一个数组,一个散列?]”是什么意思。如果你能澄清,我会尽力帮助你。
text = <<BITTER_END
productRankingOct12: [
"LessPopularityEPC"
"CtrEpcJob"
"DeviceSpecificLPE"
]
BITTER_END
FName = "text"
IO.write(FName, text)
#=> 79
arr = IO.foreach(FName).with_object([]) { |line, a|
a << line unless line =~ /[\[\]]/ }
#=> ["\"LessPopularityEPC\"\n",
# "\"CtrEpcJob\"\n",
# "\"DeviceSpecificLPE\"\n"]
puts arr
# "LessPopularityEPC"
# "CtrEpcJob"
# "DeviceSpecificLPE"