找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3639|回复: 9

[他山之石] 大家把平时写正则表达式的模式写到这个贴下吧,日积月累。

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-12-2 16:51:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
把这个帖子做成CAD开发方面的正则表达式的经典例子。

抛砖引玉:

匹配数字的模式:"[0-9]+"

命令: (xd::string:regexps "[0-9]+" "abc2345,34de" "")
("2345" "34")

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-2 17:08:11 | 显示全部楼层
本帖最后由 st788796 于 2013-12-2 17:26 编辑

1 数字含小数  "\\d+.\\d+"
_$ (Xd::String:RegexpS "\\d+.\\d+" "fdsa1232.3213fsdfdasd2.112fds232" "")
("1232.3213" "2.112" "232")
_$

2 处理坐标文件常用的 空格分隔或逗号分隔或者用 1

("12323.22" "12333.22" "1211")
_$ (XD::String:RegexpS "[^ ]+" "12323.22 12333.22 1211" "")
("12323.22" "12333.22" "1211")
_$ (XD::String:RegexpS "[^,]+" "12323.22,12333.22,1211" "")
("12323.22" "12333.22" "1211")
_$

点评

(Xd::String:RegexpS "\\d+.\\d" "a-3.2B3.50V20C" "")返回("3.2" "3.5" "0V2")了  详情 回复 发表于 2013-12-12 09:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-12-2 19:27:50 来自手机 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2013-12-3 08:31 编辑

;;85.17 [功能] 取文字末尾的数字和小数点 By 自贡黄明儒
;;示例(HH:EndNumber1+ "5.4aAa2.3"),返回"2.3"
(defun HH:EndNumber1+ (str)
  (car (xd::string:regexps "(\\d+)?[.]?(\\d+)+$" str ""))
)

;;85.23 [功能] 字符串末尾数字+1
;;示例(HH:EndNumberAdd "a3.02");返回"a3.03"
(defun HH:EndNumberAdd (str / I STR1 STR2)
  (if (setq str1 (car (xd::string:regexps "\\d+$" str "")))
    (progn (setq str2 (itoa (1+ (atoi str1))))          ;提取的尾数+1
           (setq i (- (strlen str1) (strlen str2)))
           (if (> i 0)
             (repeat i (setq str2 (strcat "0" str2)))
           )
           (XD::String:Replace "\\d+$" str str2 "")
    )
    (strcat str "1")
  )
)
;;主要用于非标图编号、图中序号等
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 208个

财富等级: 日进斗金

发表于 2013-12-2 22:35:09 | 显示全部楼层
匹配建筑的门窗字的 正则表达式...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 208个

财富等级: 日进斗金

发表于 2013-12-2 22:35:11 | 显示全部楼层
匹配建筑的门窗字的 正则表达式...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-12-3 08:27:11 | 显示全部楼层
;;85.27 [功能] 字符串内是否包含指定的字符
;;示例(ACET-STR-WCMATCH "ssABCsBs" "*c*");T
(defun ACET-STR-WCMATCH1 (str f)
  (if (XD::String:RegExpS (strcat "[" f "]+") str "")
    T
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2013-12-4 00:38:48 | 显示全部楼层
本帖最后由 newer 于 2013-12-4 00:40 编辑

匹配是否是纯数字

(xd::string:regexps "^([+-]?[0-9]+(\.[0-9]*)?)$" "34.5" "")
("34.5")
如果小数的话,点后面必须要求有数字,就写
(xd::string:regexps "^([+-]?[0-9]+(\.[0-9]+)?)$" "34.5" "")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-12-12 09:47:22 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2013-12-12 09:49 编辑
st788796 发表于 2013-12-2 17:08
1 数字含小数  "\\d+.\\d+"
_$ (Xd::String:RegexpS "\\d+.\\d+" "fdsa1232.3213fsdfdasd2.112fds232" "" ...


(Xd::String:RegexpS "\\d+.\\d+" "a-3.2B3.50V20C" "")返回
("3.2" "3.50")了{:soso_e109:},丢了20

点评

数字含小数,正则表达式建议试一下这个"\d+(\.\d+)?" 至于Lisp写法的正则表达式抱歉我还不会哦  详情 回复 发表于 2014-4-22 19:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-12-28 17:28:18 | 显示全部楼层
很好!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 282个

财富等级: 日进斗金

发表于 2014-4-22 19:04:36 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-12-12 09:47
(Xd::String:RegexpS "\\d+.\\d+" "a-3.2B3.50V20C" "")返回
("3.2" "3.50")了,丢了20

数字含小数,正则表达式建议试一下这个"\d+(\.\d+)?"
至于Lisp写法的正则表达式{:soso_e117:}抱歉我还不会哦

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-24 22:36 , Processed in 0.451610 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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