明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 克瓦多罗

请教一个关于正则表达式的问题

  [复制链接]
发表于 2008-10-30 19:24:00 | 显示全部楼层

程序类似黑箱,从这头送个东西作原料,那头送出我们想要的东西 (成品)

您只须依您上传的图形截个部分图面应该就够了

发表于 2008-10-31 23:38:00 | 显示全部楼层

1(setq n (vl-string-search "/" text) ) 求出 /出现的序号

2 (setq newstr (substr (+ n 2)  3)

3 vla-put-textstring 把文字改成 10m即可

 楼主| 发表于 2008-11-3 11:32:00 | 显示全部楼层

按照楼上的写的编进去好象没成功啊.我把文件上传了.就和图中一样

通配符是****dB/####m(暗装)

需要得到的结果是把所有文字只保留####部分

能不能帮我写个完整的vlisp式子 ...

本帖子中包含更多资源

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

x
发表于 2008-11-3 17:52:00 | 显示全部楼层
本帖最后由 作者 于 2008-11-4 9:14:44 编辑

Andyhon发表于2008-10-30 16:27:00Command: (vl-string->list \"/\")(47)Command: (vl-list->string (cdr (member 47 (vl-string->list \"0.4dB/5m\"))))\"5m\"

向你学习了,Andyhon...

练练手...

(defun c:tt (/ /*m elist ename i ss v1)
  (setq echo (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (command "._undo" "_begin")
  (if (setq ss (ssget '((0 . "*TEXT*") (1 . "*dB/*m(暗装)"))))
    (progn
      (setq i 0)
      (while (< i (sslength ss))
 (setq ename (ssname ss i))
 (setq elist (entget ename))
 (setq v1 (cdr (assoc 1 elist)))
 (setq /*m (vl-list->string
      (cdr (member 47 (vl-string->list v1)))
    )
 )
 (setq /*m (vl-string-right-trim "m(暗装)" /*m))
 (entmod (subst (cons 1 /*m)
         (assoc 1 elist)
         elist
  )
 )
 (entupd ename)
 (setq i (1+ i))
      )
    )
  )
  (command "._undo" "_end")
  (setvar "cmdecho" echo)
  (princ)
)

发表于 2011-8-17 20:47:13 | 显示全部楼层
(defun c:tt(/ regex s seltext i objtext oldtext)
  (princ  "\n明经通道文本模糊替换示例--将S3*A替换为S1*L")
  (setq seltext(ssget "X" '((0 . "TEXT"))))
  (if  seltext
    (progn
      (setq i 0)
      (setq regex(vlax-create-object "Vbscript.RegExp"));引用正则表达式控件
      (vlax-put-property regex "IgnoreCase" 0); 不忽略大小写
      (vlax-put-property regex "Global" 1);全文匹配,而不是只匹配第一处
      (repeat (sslength seltext)
        (setq objtext(vlax-ename->vla-object (ssname seltext i)))
        (setq s (vla-get-textstring objtext))
        (setq oldtext s)
        ;替换字符
        (vlax-put-property regex "Pattern" "(.{5,})/(.{1,})m(.{4,})")
        (setq s(vlax-invoke-method  regex "Replace" s "$2"))
        (vla-put-textstring objtext s)
        (if (= oldtext s)
          (progn
            (princ (strcat "\n替换前为:" oldtext))
            (princ (strcat "\n替换后为:" s))
            )
          )
        (setq i(1+ i))
        )
      (vlax-release-object regex)
      )
    )
  (princ)
)
发表于 2011-8-17 20:48:49 | 显示全部楼层
以上程序完全参照明总的程序
http://bbs.mjtd.com/forum.php?mo ... 2%B1%ED%B4%EF%CA%BD
发表于 2012-5-31 20:25:17 | 显示全部楼层
ygp820601 发表于 2011-8-17 20:47
(defun c:tt(/ regex s seltext i objtext oldtext)
  (princ  "\n明经通道文本模糊替换示例--将S3*A替换为 ...

(vlax-put-property regex "Pattern" "(.{5,})/(.{1,})m(.{4,})")
        (setq s(vlax-invoke-method  regex "Replace" s "$2"))
什么意思
发表于 2012-7-1 19:48:11 | 显示全部楼层
YAOSHIWEI 发表于 2012-5-31 20:25
(vlax-put-property regex "Pattern" "(.{5,})/(.{1,})m(.{4,})")
        (setq s(vlax-invoke-method ...

先看看有关正则表达式的帖子吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-8 10:51 , Processed in 0.179951 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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