明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 364|回复: 5

[函数] wcmatch子字符串位置 堪比正则

  [复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 wzg356 于 2025-5-13 18:19 编辑

20250513修正1个小bug  功能实现及正确性基本没问题了,剩下看能否精简
wcmatch子字符符位置索引-见下载文件

原先在http://bbs.mjtd.com/thread-192381-1-1.html使用
正则强大,但容易忘,不好用。wcmatch通配符用的多/易掌握,分享出来给大家

wcmatch子字符串函数Nwcmatch用法
(Nwcmatch  str字符串  pattern模式符  flag前缀0/后缀1/全部非01)
pattern模式符参wcmatch规则定义
支持多条件,一般常用的通配模式符基本测试了
其他见源代码注释

分离/分割字符串/字母/数字/前后缀/等等Nwcmatch全部解决
上万字符检索100多毫秒
示例:
(setq str "AB红河bg3.5hk黄河35GGf56")

(if(setq lst(Nwcmatch str "[一-龥]" nil))
(mapcar '(lambda(x)(apply 'substr(cons str x)))lst)
);分离汉字

(if(setq lst(car(Nwcmatch str "@@" 0)))
(apply 'substr(cons str lst))
);=找前缀2个字母

参考上面输出下面结果
(Nwcmatch str "?河" 2);找全部'某河'
(Nwcmatch str "##" 1);=找后缀2个数字
(Nwcmatch str "~*[~a-z]*,~*[~A-Z]*" 2);=分离字母
(Nwcmatch str "~*[~0-9]*" 1);=找后缀数字



取得/打散字符串用以下这种方案快许多(下载文件已有)
;;car-str使用示例:字符串打碎
;(breakstr "aad汉2字126")
;效率较vl-string->list法几乎翻倍
(defun breakstr(str / l1 a)
        (while(/= ""(setq a(car-str str)))
                (setq
                        str(substr str(1+(strlen a)))
                        l1(cons a l1)
                )
        )(reverse l1)
)
(defun car-str(str / a)
        (setq a(substr str 1 1))
        (cond               
                ((> (ascii a)128)
                        (substr str 1 2)
                )
                ((= "\\U+"(substr str 1 3))
                        (substr str 1 7)
                )
                (a)
        )
);取得首字符







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 3明经币 +3 金钱 +5 收起 理由
USER2128 + 1 很给力!
hubeiwdlue + 1 很给力!
tigcat + 1 + 5 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
谢谢大佬分享
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
好的学习资料,感谢分享
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
谢谢大佬分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 08:22 | 显示全部楼层
子函数matchPRE/matchSUF返回值应该均为整数....(if n n 0)
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 18:12 | 显示全部楼层
20250513修正1个小bug
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-14 08:20 , Processed in 0.173622 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表