0
A
回答
1
如果你想檢索匹配的位置的各項指標與元素一起,你可以試試這個:
(filter #(re-find #"ef" (second %)) (map-indexed vector '("abc" "def" "gih")))
=>([1 "def"])
map-indexed vector
生成使用正則表達式針對的索引/值懶惰序列
user> (map-indexed vector '("abc" "def" "gih"))
([0 "abc"] [1 "def"] [2 "gih"])
然後可以filter
每個列表成員的元素。
#(re-find #"ef" (second %))
2
結合filter
和re-find
可以很好地做到這一點。
user> (def fx '("abc" "def" "gih"))
#'user/fx
user> (filter (partial re-find #"ef") fx)
("def")
user> (filter (partial re-find #"a") fx)
("abc")
在這種情況下,我想雖然定義一個匿名函數,在這種情況下正常工作,以及將它們與partial
結合起來。這也是有用的使用re-pattern
,如果你不提前知道搜索字符串:
user> (filter (partial re-find (re-pattern "a")) fx)
("abc")
0
這是一個傳統的遞歸定義,它返回索引。很容易修改以返回相應的字符串。
(defn strs-index [re lis]
(let [f (fn [ls n]
(cond
(empty? ls) nil
(re-find re (first ls)) n
:else (recur (rest ls) (inc n))))]
(f lis 0)))
user=> (strs-index #"de" ["abc" "def" "gih"])
1
user=> (strs-index #"ih" ["abc" "def" "gih"])
2
user=> (strs-index #"xy" ["abc" "def" "gih"])
nil
(描述:該輔助函數f
被定義爲在let
結合,然後被稱爲在結束如果傳遞給它串序列不爲空時,它搜索在正則表達式如果找到了字符串,則返回索引,這就使用了re-find
的結果爲真的事實,除非失敗,否則返回nil
如果前面的步驟沒有成功,函數就會啓動如果它到達序列的末尾,則返回nil)
1
Just indices:
懶洋洋地:
(keep-indexed #(if (re-find #"ef" %2) %1) '("abc" "def" "gih")) => (1)
使用循環/復發
(loop [[str & strs] '("abc" "def" "gih") idx 0 acc []] (if str (recur strs (inc idx) (cond-> acc (re-find #"ef" str) (conj idx))) acc))
對於剛剛元素,是指亞瑟Ulfeldts答案。
相關問題
- 1. 尋找forrecords包含特定字符串
- 2. pandas:查找給定列包含特定子字符串的行
- 3. Rails:如何查找包含特定字符串的字段
- 4. 如何找到,如果字符串包含的子字符串格式(spaceNUMBER-NUMBERspace)
- 5. 如何檢查一個字符串是否包含特定的子字符串
- 6. 抓取包含特定子字符串的特定修訂號
- 7. Laravel找到一個包含特定字符串值的項目
- 8. 如何找到不包含子字符串的元素
- 9. 如何找到包含子字符串的節點?
- 10. 子串特定字包含它們之間特殊字符
- 11. MongoDB:如何過濾只包含特定字符的字符串?
- 12. 如何替換包含python中特定字符的字符串?
- 13. 如何找到包含精確字符串文本的特定類的跨度?
- 14. 如何找到具有包含給定的兩個字符串
- 15. 如何找到,如果常規ARGS含有特定字符串
- 16. 如何掃描其中包含特定字符的子字符串
- 17. 如何查找在iOS中包含@符號的子字符串
- 18. regexp,如何找到不包含某個字符的字符串?
- 19. 確定一個字符串是否包含特定位置的子字符串
- 20. 如何找到包含給定字符串中所有字符的最小子字符串?
- 21. 從包含特殊字符的字符串中提取子串
- 22. 查找包含給定的字符串
- 23. 如何查找字符串是否包含所有特定字符?
- 24. 如何獲取包含在指定字符串中的特定字符串?
- 25. 如何找到一個字符串包含數字後跟一個特定的字符串
- 26. 查找僅包含特定字符
- 27. 程序集查找包含給定字符串中子字符串的字
- 28. 檢索字符串包含特定子串C#
- 29. 如何選擇在子節點中包含特定子字符串的節點?
- 30. 查找包含字符串集特定字詞蟒蛇
優秀的迭代示例。在[lisp]中學習函數式編程的更多示例可以在[sicp](http://mitpress.mit.edu/sicp/)處找到。 –
爲什麼你要在循環中綁定f? –
(哇,爲什麼我得到一個downvote?)@Igrapenthin,'f'不必在'loop'中定義,當然。通常我將這種輔助函數定義爲一個單獨的命名函數,例如,稱爲「strs-index-aux」。我認爲這是完全合法的,並且可能更易於閱讀。因爲這個函數的目的只是爲了strs-index的工作,所以一個選項是用本地綁定來定義函數,這樣它就不會出現在命名空間中。不過,也許這不是你所問的。不確定。 – Mars