0

在 Ruby 中,尝试从一个长字符串中提取一些模式并将每个匹配的模式放入一个字符串数组中。例如,长字符串输入可以是

"\"/ebooks/1234.pdf\"  \"/magazines/4321.djvu\""

预期的结果是

["/ebooks/1234.pdf", "/magazines/4321.djvu"]

这是一个正斜杠,后跟三个关键字之一:电子书、杂志或报纸,然后是另一个正斜杠,然后是除双引号之外的任意数量的非空白字符。

使用交替(管道垂直条)尝试了这种模式,但失败了:

/\/(ebooks|magazines)\/[^\s"]+/

这给出了这个结果:

[["ebooks"], ["magazines"]]

正确的模式应该是什么?

4

1 回答 1

1
"\"/ebooks/1234.pdf\"  \"/magazines/4321.djvu\""
.scan(/\/(?:ebooks|magazines|newspapers)\/[^\s"]+/)
# => ["/ebooks/1234.pdf", "/magazines/4321.djvu"]

"\"/ebooks/1234.pdf\"  \"/magazines/4321.djvu\""
.scan(/"([^"]+)"/).flatten
# => ["/ebooks/1234.pdf", "/magazines/4321.djvu"]
于 2014-02-02T11:29:44.840 回答