CSDN专家博客精华版

为人民服务!
  首页  :: 新随笔  :: 管理

UltraEdit正则表达式搜索替换小技巧

Posted on 2007-12-17 10:16  csdnexpert  阅读(119)  评论(0编辑  收藏  举报

 

由于需要,要将Admodfy导出来的ldf文件内容做修改,样例如下

 

dn: CN=蔡妮,OU=AD Import OU,DC=myDomain,DC=com,DC=cn
changetype: add
objectClass: contact
cn: 蔡妮
sn: 蔡妮
mailNickname: lily
.cai
targetAddress: lily
.cai@myDomain.com.cn
proxyAddresses: X400
:c=us;a= ;p=myDomain;o=Exchange;s=lily.cai;
proxyAddresses: SMTP
:lily.cai@myDomain.com.cn
mail: lilycai@myDomain
.com.cn
company: 总部
department: 财务
DisplayName: 蔡妮[Lily]
name: 蔡妮
profilePath: 
\ServerNameUserConf$lily.cai

 

要将含有X400邮件地址的行和profilePath的行删除掉,修改为

 

dn: CN=蔡妮,OU=AD Import OU,DC=myDomain,DC=com,DC=cn
changetype: add
objectClass: contact
cn: 蔡妮
sn: 蔡妮
mailNickname: lily
.cai
targetAddress: SMTP
:lily.cai@myDomain.com.cn
proxyAddresses: SMTP
:lily.cai@myDomain.com.cn
mail: lily
.cai@myDomain.com.cn
company: 总部
department: 财务
DisplayName: 蔡妮[Lily]
name: 蔡妮

 

 由于文本中有大量的用户,手工删除很不现实,于是使用UltraEdit的正则表达式搜索删除,问题很快解决,用UltraEdit打开文本,首先到菜单中选择正则表达式引擎,正则表达式引擎分支位于“配置 - 搜索”之下,有如下选项:

Perl 兼容正则表达式
如果选中该选项,则编辑器将基于 Boost C++ 库使用 Perl 样式的正则表达式(当在查找/替换对话框里选中正则表达式时)。

UltraEdit 样式正则表达式
如果选中该选项,则编辑器将在查找/替换对话框里选中正则表达式时使用 UltraEdit 样式的正则表达式。

UNIX 样式正则表达式
如果选中该选项,则编辑器将在查找/替换对话框里选中正则表达式时使用 UNIX 样式的正则表达式。

选择自己喜好的正则表达式类型,不同的引擎语法不同,比如Perl兼容的正则表达式,回车是\r,而在UltraEdit风格的以及Unix兼容的回车则分别是^p和\n,下面以UltraEdit风格来说明。

选好风格后开始搜索,使用Ctrl+R弹出替换对话框,钩选“正则表达式”,搜索内容中输入 *X400*^p ,替换为空即可,点击全部替换后,则所有包含X400字样的行都被删除。

附:

正则表达式 (UltraEdit 语法):
 
%  匹配行首 - 表示搜索字符串必须在行首,但不包括任何选定的结果字符中的行终止字符。
 
$  匹配行尾 - 表示搜索字符串必须在行尾,但不包括任何选定的结果字符中的行终止字符。
 
?  匹配任何除换行符的字符。
 
*  匹配任何除换行符外所出现的任意数量的字符。
 
+  匹配一个或多个前面的字符/表达式。必须找到至少一个出现的字符。不匹配重复的换行符。
 
++  0 次或多次匹配前面的字符/表达式。不匹配重复的换行符。
 
^b  匹配一个分页符。
 
^p  匹配一个换行符 (CR/LF) (段落) (DOS 文件)
 
^r  匹配一个换行符 (仅 CR) (段落) (MAC 文件)
 
^n  匹配一个换行符 (仅 LF) (段落) (UNIX 文件)
 
^t  匹配一个制表符
 
[ ]  匹配任何括号中的单个字符或范围
 
^{A^}^{B^}  匹配表达式 A 或 B
 
^  忽略其后的正则表达式字符
 
^(*^)   在表达式加上括号或标签在替换命令中使用。正则表达式中可以有 9 个表达式标签,数字根据它们在正则表达式中的次序确定数字。

相应的替换表达式是 ^x,x 的范围是 1-9。例如: 如果 ^(h*o^) ^(f*s^) 匹配“hello folks”,那么^2 ^1 表示将用“folks hello”替换它。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1604316