找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 653|回复: 6

[每日一码] 用正则表达式按指定格式批量修改文件名的例子

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-12-12 00:19:29 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 newer 于 2017-12-12 00:23 编辑

问题:
Hi all
While working on a project comes instructions from the Clint to change buildings numbering (12 buildings ).
that impact on the file path in all files.
Is there a solution

Example:
CHange
V:\01.Projects\K-1502\DWG\01-AR BASE\0.1.9-BUILDINGS_09\K1502_B09_B_ALL.dwg
To
V:\01.Projects\K-1502\DWG\01-AR BASE\0.1.7-BUILDINGS_07\K1502_B07_B_ALL.dwg

Thanks in advance

===============================================================================
解决代码:

[Plain Text] 纯文本查看 复制代码
(setq txt  "V:\\01.Projects\\K-1502\\DWG\\01-ARBASE\\0.1.9-BUILDINGS_09\\K1502_B09_B_ALL.dwg")
(setq txt1 (xd::string:regexpr "BUILDINGS_[0-9]+" txt "BUILDINGS_07" ""))
(setq txt2 (xd::string:regexpr "B[0-9]+" txt1 "B07" ""))
(setq txt3 (xd::string:regexpr "0.1.[0-9]+" txt2 "0.1.7" ""))

or:

1.(setq txt1 (xd::string:regexpr "(BUILDINGS_)[0-9]+" txt  (strcat "$1" "07") ""))
$1 = BUILDINGS_ 

2.(setq txt2 (xd::string:regexpr "(B)[0-9]+" txt1 (strcat "$1" "07") ""))
$1=B

3.(setq txt3 (xd::string:regexpr "(0.1.)[0-9]+" txt2 (strcat "$1" "7") ""))
$1=0.1.

or merge 1,2:
(setq txt1 (xd::string:regexpr "(BUILDINGS_)[0-9]+|(B)[0-9]+" txt (strcat "$1" "07") ""))
or
(setq txt1 (xd::string:regexpr "(B|BUILDINGS_)[0-9]+" txt (strcat "$1" "07") ""))

(setq txt3 (xd::string:regexpr "(0.1.)[0-9]+" txt1 (strcat "$1" "7") ""))

===================
txt3 = "V:\\01.Projects\\K-1502\\DWG\\01-ARBASE\\0.1.7-BUILDINGS_07\\K1502_B07_B_ALL.dwg"



函数如下:

[PHP] 纯文本查看 复制代码
(defun _AddBuildingFloor (str floor / txt1)
  (setq        txt1 (xd::string:regexpr
               "(B|BUILDINGS_)[0-9]+"
               txt
               (strcat "$1" floor)
               ""
             )
  )
  (setq        txt1 (xd::string:regexpr
               "(0.1.)[0-9]+"
               txt1
               (strcat "$1" (itoa (atoi floor)))
               ""
             )
  )
)


命令: (_ADDBUILDINGFLOOR txt "07")
"V:\\01.Projects\\K-1502\\DWG\\01-ARBASE\\0.1.7-BUILDINGS_07\\K1502_B07_B_ALL.dwg"

命令: (_ADDBUILDINGFLOOR txt "12")
"V:\\01.Projects\\K-1502\\DWG\\01-ARBASE\\0.1.12-BUILDINGS_12\\K1502_B12_B_ALL.dwg"


正则表达式替换函数见开源函数库:

(XD::String:RegExpR)对字符串进行正则表达式替换


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

已领礼包: 488个

财富等级: 日进斗金

发表于 2017-12-12 00:44:16 | 显示全部楼层
点是特殊字符,应该加还原符。
你那是赶巧了刚好没冲突
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2017-12-12 00:48:05 | 显示全部楼层

单位,到家 好多机器了,没冲突过 :)

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

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2017-12-13 11:21:39 | 显示全部楼层
这么多英文的问题,你是在转发别的论坛的吧?晓东API在国外也流行?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2017-12-21 12:56:26 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 22:36 , Processed in 0.371635 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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