Извлечение строки из коллекций clojure с помощью регулярных выражений

Можете ли вы предложить мне самый короткий и простой способ для извлечения подстроки из последовательности строк? Я получаю эту коллекцию от использования invive Framework, которая берет контент с определенной веб-страницы, и вот что я получаю в результате:

("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 из каждой строки в последовательности. Я пытался что-то с функцией разделения, но безуспешно. Кто-нибудь может предложить регулярное выражение или любой другой подход к этой проблеме?

Спасибо

2 ответа

Решение

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.

Будет ли что-то простое, как эта работа для вас?

(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")

Это определенно не общее решение, но оно соответствует предоставленным вами данным.

Другие вопросы по тегам