Извлечение строки из коллекций 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")
Это определенно не общее решение, но оно соответствует предоставленным вами данным.