gpt4 book ai didi

regex - 我如何在 clojure 的正则表达式中获得最后一组

转载 作者:行者123 更新时间:2023-12-02 00:07:19 26 4
gpt4 key购买 nike

我有一串来自数据库的数据

[context]=[context desc].[context level].&[data]

我写了一个正则表达式来查找看起来像这样的数据部分

(.* [.&;^])(?:[^*])([^]]+)

这会返回三组,但我只想要最后一组。我如何才能得到最后一组?

编辑

抱歉,我应该更清楚 (re-seq #"(.*[.&;^])(?:[^*])([^]]+)"行) 是:

(["[context]=[context desc].[context level].&[data" "[context]=[context desc].[context level].&" "data"])

我想要的只是["data"]

最佳答案

回答原来的问题:

单个匹配项由 re-seq 返回以向量的形式,完全匹配是向量的第一项,组是其他元素,按顺序排列。您可以使用 peek获取向量的最后一个元素(以特别快的方式):

(def s "[context]=[context desc].[context level].&[data]")
(def r #"(.*[.&;^])(?:[^*])([^]]+)") ; tweaked to remove a space

(map peek (re-seq r s))
;= ("data")

选择不同的正则表达式可能仍然是个好主意。例如,如果最终的 [data] substring 确实出现在输入字符串的末尾,如果它不包含 [字符,你可以使用 #"[^\[]+(?=\]$)" :

(re-seq #"[^\[]+(?=\]$)" s)
;= ("data")

关于regex - 我如何在 clojure 的正则表达式中获得最后一组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17528405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com