Вы можете использовать эту функцию для обработки отдельных строк:
(defn lastval [s]
(second (re-find #",([^,:]+):\d*$" s)))
; ^ the comma preceding the interesting section
; ^ the part in parens will be captured as a group
; ^ character class meaning "anything except , or :"
; ^ the colon after the interesting section
; ^ any number of digits after the colon
; ^ end of string
; ^ returns a vector of [part-that-matches, first-group];
; we're interested in the latter, hence second
Примечание.это возвращает nil
, если регулярное выражение не совпадает.
Например:
user> (lastval "BSS:17,BTSM:0,BTS:3")
"BTS"
Если позже вы захотите извлечь всю информацию в виде простых в работе битов, выможно использовать
(defn parse [s]
(map (juxt second #(nth % 2)) (re-seq #"(?:^|,)([^,:]+):(\d+)" s)))
Например
user> (parse "BSS:17,BTS:0,BTS:3")
(["BSS" "17"] ["BTS" "0"] ["BTS" "3"])