说起来 用UltraEdit也是七八年了 用正则表达式查找也是四五年了 就是替换一直没有深入研究 原先也琢磨过几次 均是无功而返 今天客户给了一个要求 觉得可以用正则表达式做到 经过半小时摸索 终于初窥门径 了却心头一桩憾事 欣喜之余 以此为记
正文: 客户文件如下: .... }li "(A)|IN GENERAL.-If t(后半部分略 下同)
要求: 将 "(序号)| 改为 (序号)|" 序号为123 ABC abc i ii iii....
思路: 首先给出查找的正则表达式 很简单 直接用*替代序号即可(下面所有的搜索都需要UltraEdit的搜索框勾上"正则表达式"选项 不赘述) 搜索表达式如下: "(*)|
一搜 果然成功 窃喜ing
接下来就是难题了 如何将序号在替换框内表示出来 以前看资料 查帮助 早知道UE中代替表达式是^x x的范围是 1-9 但问题是一直不知何者为替换表达式中的^1呢? 很明显我的搜索表达式第一个也是唯一一个标注表达式是这个 * 了
第一步:直接在替换表达式中写 (^1)|"
执行替换 不出所料的没有成功 将搜到的第一个 "(A)| 替换成了 ()|" 也就是说 ^1没有取到值
第二步:抓狂ing
第三步:再查资料 发现网上有个例子 : 将一段合并为一行: 替换 [ ^t]++^p^([~ ^t^p]^) 为 ^1 一试 果然可以 但是他的里面并没有用到* ?之类的通配符啊 ^1从何而来?惊奇 研究 冥冥中似有所悟 继续查资料 又发现另外一句话: 相应的替换表达式是 ^x,x 的范围是 1-9。例如: 如果 ^(h*o^) ^(f*s^) 匹配“hello folks”,那么^2 ^1 表示将用“folks hello”替换它。
啊哈 是这样了 一个^( ^)内的表达式 为一个替换区域 也就是^1 ^2对应的通配符! 第四步:改进搜索方式 "^((*)^)| 替换为 (^1)|" 执行 发现 "(A)|被替换成了((C))|" 虽然不是我想要的结果 但是序号已经出现 也就是说离成功很近了 逐渐摸索 得到最终正确结论也是顺理成章的:
结论:
解释:搜索表达式分三部分 ^("^) ^((*)^) ^(|^) 看明白了吧? |
|