UltraEdit一直是我这几年在windows下最得力的文本编辑器、用来编辑Bat,VBS,HTML,PHP等文件时基本上都是用UltraEdit来完成的。相信大部分朋友都用过这款文本编辑器软件、所以也就不多做介绍了、这次就把我之前用到过的UltraEdit的正则表达式给整理出来(其实有一些我也没用过)
什么叫正则表达式:
相信您使用过Windows或Dos下用于文件查找的通配符,也就是*和?。如果您想查找某个目录下的所有的 Word文档的话,您很自然地会搜索”*.doc”。在这里,”*”会被解释成任意的字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不 过比起通配符,它能更精确地描述您的需求。当然,代价就是更复杂,例如搜索doc为扩名的文件,正则表达式为”.*.doc”。别看它复杂了很多,但正 则表达式几乎能满足您的一切搜索需求。比如您可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号”-”,最后是7或 8位数字的字符串(像010-12345678或0376-7654321)。
在UltraEdit中,正则表达式被很好地支持,目前的版本中一共支持三种,UltraEdit风格正则表达式、Unix风格正则表达式和Perl兼容正则表达式,本文介绍Perl兼容正则表达式,这是一条被广泛使用的正则表达式,绝大多数的编程语言都支持这种表达式。
要使用Perl兼容正则表达式,需要在UltraEdit中做一下设置。点击菜单 高级->配置,出现下图的对话框,在左侧选中”正则表达式引擎”,右边勾选”Perl兼容正则表达式”。
正则表达式语法:
由于本文的重点不在正则表达式语法方面,这里只做简单介绍。
元字符:
| 元字符 | 说明 |
| . | 匹配除换行符以外的任意字符 |
| w | 匹配字母或数字或下划线或汉字 |
| s | 匹配任意的空白符() |
| d | 匹配数字 |
| b | 匹配单词的开始或结束 |
| W | 匹配任意不是字母,数字,下划线汉字的字符 |
| S | 匹配任意不是空白符的字符 |
| D | 匹配任意非数字的字符 |
| B | 匹配不是单词开头或结束的位置 |
| ^ | 匹配行首 |
| $ | 匹配行尾 |
字符转义:
如果您想查找元字符本身的话,需要使用””来转意。例如”.”代表除换行以外的任意字符,如果您想搜索”.”这个字符的话,需要这样使用”.”。
| 语法 | 说明 |
| * | 重复零次或更多次 |
| + | 重复一次或更多次 |
| ? | 重复零次或一次 |
| {n} | 重复n次 |
| {n,} | 重复n次或更多次 |
| {n,m} | 重复n到m次 |
字符集
若要匹配aeiou五个字符中的任意一个,可以表示成[aeiou]。再如[0-9]表示0到9之间的任意一个数字,它的含义和元字符中的d实际上是一样的。
反意
如果要匹配非a则[^a],除aeiou五个字母之外的表示成[^aeiou],
贪婪与止贪
设有字符串dveadebcadefboipi,正则表达式a.*b,表达式的意思是匹配由a开始中间包含任意多个字符并以b结尾,这个表达式匹配出来的结果是adebcadefb,而不会是adeb,我们称这种匹配为贪婪匹配,因为它匹配了尽可能多的字符。要防止这种贪婪匹配,使用”?”,把上面的表达式写成a.*?b的话,匹配出来的结果就是adeb了。
UltraEdit中的正则表达式查找
我们以一个html为例,希望搜索一个<ul>Html标记的内容。首先要明确要搜索的字符串的特征:以<ul开头ul> 结尾,中间包含任意字符(包括换行),于是表达式可以写成<ul[Ss]*?ul>。在这里[Ss]表示空白和非空白(即所有字 符),随后的*表示任意多个,?表示非贪婪搜索。
确定表达式后按下键盘上的Ctrl+F在弹出的查找对话框中输入表达式,并且勾选”正则表达式”,点”查找下一个”即可看到搜索的效果见下图。
UltraEdit中的正则表达式替换
在UltraEdit中正则表达式不但可以用于查询还能用于替换,这里介绍一种复杂的替换。以下图所示的一个文件为例,文中有很多日期,都是这样的格式dd/mm/yyyy,我们希望把他替换成yyyy-mm-dd的格式。
既然是替换,那么必需先查到目标串,用d表示数据,月和日都一位或两位数据组成,正则表达式表示为d{1,2},年份都四个数字表示为 d{4},加上中间的分隔符/,整个日期串可以表示为d{1,2}/d{1,2}/d{4}。我们替换的目标是要把最后的年份放到第一位去,因此 还需要这个搜索能返回各个部分的值,在Perl正则表达式中用()可以返回搜索串中的值,并用$1表示第一个括号中的值,因此我们加上3个括号表达式变成 (d{1,2})/(d{1,2})/(d{4}),那么$1表于日,$2表示月,$3表示年。说到这里要达到我们的目标就很简单了。
按下键盘上的Ctrl+R调出替换对话框,查找内容为(d{1,2})/(d{1,2})/(d{4}),替换为$3-$2-$1,记得勾上”正则表达式”。
常用的正则表达式
行首空格: ^s+
行尾空格:s+$
IP地址:[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
正整数: ^[1-9]d*$
负整数: ^-[1-9]d*$
PS:不足之处还望大家海涵、要是能够留言告知就更好了

notepad是不怎么样的!
正则表达式功能强大、但是操作起来还是很需要技术含量的
这就只能多多操作来熟练了、不过用得不多的时候就很容易忘记
其实我就用来来写写文字、正则表达式这类高级点得东西还是很少用到的
不过就是windows自带的真的功能太单一了一点
notepad的确不咋地呀