tryhi 发表于 2021-6-9 17:24:43

创建支持数量的过滤规则

本帖最后由 tryhi 于 2021-6-10 16:14 编辑

其实这个好几年就写了,之前只在明经群里发过,但是感觉好像用得比较少,由于用得很少,所以不知道有没有可能有BUG,欢迎各位找BUG或者直接优化
这个题目不知道怎么写好
假设我们需要做一个ssget,框选的文字是这样的规则
前面2-5个数字,然后一个小数点,后面1-2个数字,然后一个括号里面1-3个数字
如图,此时ssget写规则就显得有点力不从心了

https://www.hualigs.cn/image/60c0877553f5b.jpg

此函数正是在这种情况下诞生,创建的规则同样支持wcmatch使用


创建过滤规则,支持数量(作者:tryhi-大海)
例子:选择前面2-5个数字,然后一个小数点,后面1-2个数字,然后一个括号里面1-3个数字
(ssget (list (cons 1 (try-wcmatch-N "#{2,5}`.#{1,2}(#{1,3})"))))








菜卷鱼 发表于 2021-6-11 16:12:31

既然用得不多,为啥还要单独写一个那么复杂的呢?

(defun ss:n ()
(setq aa '("##." "###." "####." "#####."))
(setq bb '("#" "##"))
(setq cc '("(#)" "(##)" "(###)"))
(setq n1 (zuhe aa (zuhe bb cc)))
(setq n2 (mapcar '(lambda (x) (apply 'strcat x)) n1))
(ssget (list (cons 1 (strjoin n2 ","))))
)
;;;字符串连接
(defun strjoin (lst del)
(if (cdr lst)
    (strcat (car lst) del (strjoin (cdr lst) del))
    (car lst)
)
)
;;;两个表两两组合成新表
(defun zuhe (lst1 lst2 / i j a lst)
(setq i 0)
(repeat (length lst1)
    (setq a (nth i lst1))
    (if (atom a)(setq a (cons a nil)))
    (setq j 0)
    (repeat (length lst2)
      (setq b (nth j lst2))
      (if (atom b)(setq b (cons b nil)))
      (setq lst
       (append
         lst
         (list(append a b))
       )
      )
      (setq j (1+ j))
    )
    (setq i (1+ i))
)
Lst
)

tryhi 发表于 2021-6-12 16:15:58

本帖最后由 tryhi 于 2021-6-12 16:19 编辑

菜卷鱼 发表于 2021-6-11 16:12
既然用得不多,为啥还要单独写一个那么复杂的呢?
用得不多这个没想到,当初的想法是直接代替的,但是由于变量无法用单引号,导致每次写ssget的时候就要list cons一堆,又觉得麻烦
就像我定义try-sort一样,就是完全替代掉sort,只是当时没想到每次都要写list+cons就觉得好麻烦,就用得特别少了,不过也可以发散一下,直接重定义ssget

zixuan203344 发表于 2021-6-10 10:51:03

由于可能用得上,所以写了,由于比较难写,所以写了好几年了,由于写了好几年心里没底,所以用得比较少,由于用得少,所以不知道有没有BUG,由于想找bug,所以发一贴,由于发帖了,所以大家可能用得上,循环到头部,over……

664571221 发表于 2021-6-10 08:54:02

海哥你就是我心中的大神

lxl217114 发表于 2021-6-10 08:57:54

海哥你就是我心中的大神+1

alexmai 发表于 2021-6-10 09:02:51

好像不能属性块文字,模糊搜索吧,能支持就完美

xujinhua 发表于 2021-6-10 09:44:09

厉害ssget玩出花来

xj6019 发表于 2021-6-10 09:46:29


海哥你就是我心中的大神+2

ymcui 发表于 2021-6-10 09:55:16

高手好像不能属性块文字,模糊搜索吧,能支持就完美

nijiea123 发表于 2021-6-10 15:06:12

这个能玩出花样来 不错:lol

xudongchu 发表于 2021-6-11 12:35:31

给力 还能这样玩
页: [1] 2
查看完整版本: 创建支持数量的过滤规则