0

Ruby では、長い文字列からいくつかのパターンを抽出し、一致した各パターンを文字列の配列に入れてみてください。たとえば、長い文字列の入力は次のようになります。

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

期待される結果は

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

これは、スラッシュの後に、3 つのキーワードのいずれかが続きます: ebooks、magazine、または newses、その後に別のスラッシュが続き、その後に二重引用符を除く任意の数の空白以外の文字が続きます。

交互 (パイプの垂直バー) を使用してこのパターンを試しましたが、失敗しました:

/\/(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 に答える