4

文字列シーケンスから部分文字列を抽出するための最短かつ最も簡単な方法を教えてください。このコレクションは、特定のWebページからコンテンツを取得するenliveフレームワークを使用して取得しています。その結果、次のように取得しています。

("background-image:url('http://s3.mangareader.net/cover/gantz/gantz-r0.jpg')"
 "background-image:url('http://s3.mangareader.net/cover/deadman-wonderland/deadman-wonderland-r0.jpg')"
 "background-image:url('http://s3.mangareader.net/cover/12-prince/12-prince-r1.jpg')" )

私が欲しいのは、シーケンス内の各文字列からURLを抽出するのに役立つことです。パーティション関数を使用して何かを試しましたが、成功しませんでした。誰かが正規表現、またはこの問題に対する他のアプローチを提案できますか?

ありがとう

4

2 に答える 2

5

re-seqレスクへ!

(map #(re-seq #"http.*jpg" %) d)
(("http://s3.mangareader.net/cover/gantz/gantz-r0.jpg")  
("http://s3.mangareader.net/cover/deadman-wonderland/deadman-wonderland-r0.jpg") 
("http://s3.mangareader.net/cover/12-prince/12-prince-r1.jpg"))
user> 

re-findさらに優れています:

user> (map #(re-find #"http.*jpg" %) d)
("http://s3.mangareader.net/cover/gantz/gantz-r0.jpg" 
 "http://s3.mangareader.net/cover/deadman-wonderland/deadman-wonderland-r0.jpg" 
 "http://s3.mangareader.net/cover/12-prince/12-prince-r1.jpg")

seq の余分なレイヤーを追加しないためです。

于 2012-05-08T19:54:04.687 に答える
2

このような単純なものはあなたのために働きますか?

(defn extract-url [s]
  (subs s (inc (.indexOf s "'")) (.lastIndexOf s "'")))

この関数は、最初と最後の一重引用符の間のすべての文字を含む文字列を返します。

文字列のシーケンスに名前が付けられているとすると、次のようssになります。

(map extract-url ss)
;=> ("http://s3.mangareader.net/cover/gantz/gantz-r0.jpg"
;    "http://s3.mangareader.net/cover/deadman-wonderland/deadman-wonderland-r0.jpg"
;    "http://s3.mangareader.net/cover/12-prince/12-prince-r1.jpg")

これは確かに一般的な解決策ではありませんが、提供した入力に適合します。

于 2012-05-08T19:51:49.960 に答える