【发布时间】:2013-07-21 22:22:23
【问题描述】:
测验题:
以下是从 Excel 逗号分隔值 (CSV) 文件导出的电影的简短列表。每个条目都是一个字符串,其中包含双引号中的电影名称、零个或多个空格以及双引号中的电影评级。例如,这是一个包含三个条目的列表:
movies = [ %q{"Aladdin", "G"}, %q{"I, Robot", "PG-13"}, %q{"Star Wars","PG"} ]你的工作是创建一个正则表达式来帮助解析这个列表:
movies.each do |movie| movie.match(regexp) title,rating = $1,$2 end # => for first entry, title should be Aladdin, rating should be G, # => WITHOUT the double quotes您可以假设电影名称和评分从不包含双引号。在单个条目中,在标题后的逗号和评分的开头引号之间可能会出现可变数量的空格(包括 0)。
以下哪个正则表达式可以实现这一点?勾选所有适用的选项。
- 正则表达式 =
/"([^"]+)",\s*"([^"]+)"/- 正则表达式 =
/"(.*)",\s*"(.*)"/- 正则表达式 =
/"(.*)", "(.*)"/- 正则表达式 =
/(.*),\s*(.*)/
有人能解释一下为什么答案是 (1) 和 (2) 吗?
【问题讨论】:
-
这不是家庭作业,因为我已经提交了测验并找到了答案。我知道 + 表示 1 或更多,^ 表示不,* 表示 0 或更多。
-
请参阅meta.stackexchange.com/questions/10811/…,了解为什么适合询问家庭作业。
-
我的意思不是关于家庭作业部分,而是不用你尝试就解决你所有的家庭作业。在这里写下你知道的和你尝试过的,这样其他人就可以回答你在哪里错过了它。如果您知道 + 是一个或多个字符,而另一个只是从整个单词中选择 1 个字符,那么您已经知道答案了。除了它看起来不像我不给你任何东西。看看那个website link i give you before in replace tab,我给你我的例子。你会知道什么答案是正确的以及为什么这个答案是正确的。
-
现实生活中,做
require 'csv' -
好的,我现在明白了,你几乎忘记了编辑前正则表达式中的所有 *,这就是为什么我认为你没有尝试任何东西。因为您可以在编辑前清楚地看到正则表达式 1 和其他 3 之间的区别